Unable to resolve firebase integration

Describe the bug
Unable to resolve firebase integration - 4 million tokens wasted - No outcome. I have been very descriptive on possible solution.
Link to the Bolt URL that caused the error
https://bolt.new/~/sb1-duhrwx
Steps to reproduce
app wont work
Expected behavior
should save in firebase app and allow process to save record in app
Screen Recording / Screenshot
No response
Platform
Browser name = Chrome
Full version = <IP_ADDRESS>
Major version = 131
navigator.appName = Netscape
navigator.userAgent = Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36 Edg/<IP_ADDRESS>
performance.memory = {
  "totalJSHeapSize": 160463084,
  "usedJSHeapSize": 154731904,
  "jsHeapSizeLimit":<PHONE_NUMBER>
}
Username = AdamSawtell
Chat ID = 75419e097153

Additional context
No response

Hello @AdamSawtell
Thank you for submitting this issue to this repository! A maintainer will be here shortly to triage and review.
In the meantime, please double-check that you have provided all the necessary information to make this process easy! Any information that can help save additional round trips is useful! We currently aim to give initial feedback within two business days. If this does not happen, feel free to leave a comment.
Please keep an eye on how this issue will be labeled, as labels give an overview of priorities, assignments and additional actions requested by the maintainers:
"Priority" labels will show how urgent this is for the team.
"Status" labels will show if this is ready to be worked on, blocked, or in progress.
"Need" labels will indicate if additional input or analysis is required.
Finally, remember to use the official Decentralized Dapp Protocol to initiate a chat with the support team to get immediate support via our Decentralized Portal.
Note: Use the chat 💬 icon at the bottom of the page to get started.


Conda build dependency conflict with rio-cogeo >=2.3.0 and fiona >=1.8.19

I am trying to build conda package with rio-cogeo >=2.3.0 and fiona >=1.8.19 dependencies.
However that seems to be impossible due to conflicts between those two. I was motivated to write this issue because fiona is used to read and write geographical data files and these two will definitely be used together in some projects.
Leaving version requirement out from one of those will install either rio-cogeo 2.0.1 and fiona 1.8.20 or rio-cogeo 2.3.1 and fiona 1.8.18.
Is there any solutions for this? Or is the only option to wait for compatible future releases?
And should I raise this issue on fiona's GitHub page?
conda build ./ -c conda-forge
$ conda build ./ -c conda-forge
/home/user/miniconda3/lib/python3.8/site-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.5) or chardet (3.0.4) doesn't match a supported version!
  warnings.warn("urllib3 ({}) or chardet ({}) doesn't match a supported "
No numpy version specified in conda_build_config.yaml.  Falling back to default numpy value of 1.16
WARNING:conda_build.metadata:No numpy version specified in conda_build_config.yaml.  Falling back to default numpy value of 1.16
Copying /home/user/Documents/test to /home/user/miniconda3/conda-bld/conflicting_1628601856491/work/
Adding in variants from internal_defaults
INFO:conda_build.variants:Adding in variants from internal_defaults
Attempting to finalize metadata for conflicting
INFO:conda_build.metadata:Attempting to finalize metadata for conflicting
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... done
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... done
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... done
BUILD START: ['conflicting-1.0.0-build_string.tar.bz2']
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... done

## Package Plan ##

  environment location: /home/user/miniconda3/conda-bld/conflicting_1628601856491/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeh

The following NEW packages will be INSTALLED:

    _libgcc_mutex:    0.1-conda_forge           conda-forge
    _openmp_mutex:    4.5-1_gnu                 conda-forge
    ca-certificates:  2021.7.5-h06a4308_1
    certifi:          2021.5.30-py38h578d9bd_0  conda-forge
    ld_impl_linux-64: 2.36.1-hea4e1c9_2         conda-forge
    libffi:           3.3-h58526e2_2            conda-forge
    libgcc-ng:        11.1.0-hc902ee8_8         conda-forge
    libgomp:          11.1.0-hc902ee8_8         conda-forge
    libstdcxx-ng:     11.1.0-h56837e0_8         conda-forge
    ncurses:          6.2-h58526e2_4            conda-forge
    openssl:          1.1.1k-h7f98852_0         conda-forge
    pip:              21.2.3-pyhd8ed1ab_0       conda-forge
    python:           3.8.11-h12debd9_0_cpython
    python_abi:       3.8-2_cp38                conda-forge
    readline:         8.1-h46c0cb4_0            conda-forge
    setuptools:       52.0.0-py38h06a4308_0
    sqlite:           3.36.0-h9cd32fc_0         conda-forge
    tk:               8.6.10-h21135ba_1         conda-forge
    wheel:            0.36.2-pyhd3deb0d_0       conda-forge
    xz:               5.2.5-h516909a_1          conda-forge
    zlib:             1.2.11-h516909a_1010      conda-forge

Preparing transaction: ...working... done
Verifying transaction: ...working... done
Executing transaction: ...working... done
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... done
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... WARNING:conda.models.version:Using .* with relational operator is superfluous and deprecated and will be removed in a future version of conda. Your spec was 1.*, but conda is ignoring the .* and treating it as 1
WARNING conda.models.version:get_matcher(537): Using .* with relational operator is superfluous and deprecated and will be removed in a future version of conda. Your spec was 1.*, but conda is ignoring the .* and treating it as 1
WARNING:conda.models.version:Using .* with relational operator is superfluous and deprecated and will be removed in a future version of conda. Your spec was 2.*, but conda is ignoring the .* and treating it as 2
WARNING conda.models.version:get_matcher(537): Using .* with relational operator is superfluous and deprecated and will be removed in a future version of conda. Your spec was 2.*, but conda is ignoring the .* and treating it as 2
WARNING:conda.models.version:Using .* with relational operator is superfluous and deprecated and will be removed in a future version of conda. Your spec was 3.*, but conda is ignoring the .* and treating it as 3
WARNING conda.models.version:get_matcher(537): Using .* with relational operator is superfluous and deprecated and will be removed in a future version of conda. Your spec was 3.*, but conda is ignoring the .* and treating it as 3
WARNING:conda.models.version:Using .* with relational operator is superfluous and deprecated and will be removed in a future version of conda. Your spec was 3.6.*, but conda is ignoring the .* and treating it as 3.6
WARNING conda.models.version:get_matcher(537): Using .* with relational operator is superfluous and deprecated and will be removed in a future version of conda. Your spec was 3.6.*, but conda is ignoring the .* and treating it as 3.6
WARNING:conda.models.version:Using .* with relational operator is superfluous and deprecated and will be removed in a future version of conda. Your spec was 2.*, but conda is ignoring the .* and treating it as 2
WARNING conda.models.version:get_matcher(537): Using .* with relational operator is superfluous and deprecated and will be removed in a future version of conda. Your spec was 2.*, but conda is ignoring the .* and treating it as 2
WARNING:conda.models.version:Using .* with relational operator is superfluous and deprecated and will be removed in a future version of conda. Your spec was 0.23.*, but conda is ignoring the .* and treating it as 0.23
WARNING conda.models.version:get_matcher(537): Using .* with relational operator is superfluous and deprecated and will be removed in a future version of conda. Your spec was 0.23.*, but conda is ignoring the .* and treating it as 0.23
WARNING:conda.models.version:Using .* with relational operator is superfluous and deprecated and will be removed in a future version of conda. Your spec was 3.*, but conda is ignoring the .* and treating it as 3
WARNING conda.models.version:get_matcher(537): Using .* with relational operator is superfluous and deprecated and will be removed in a future version of conda. Your spec was 3.*, but conda is ignoring the .* and treating it as 3
WARNING:conda.models.version:Using .* with relational operator is superfluous and deprecated and will be removed in a future version of conda. Your spec was 4.*, but conda is ignoring the .* and treating it as 4
WARNING conda.models.version:get_matcher(537): Using .* with relational operator is superfluous and deprecated and will be removed in a future version of conda. Your spec was 4.*, but conda is ignoring the .* and treating it as 4

Found conflicts! Looking for incompatible packages.
This can take several minutes.  Press CTRL-C to abort.
failed

Leaving build/test directories:
  Work:
 /home/user/miniconda3/conda-bld/work
  Test:
 /home/user/miniconda3/conda-bld/test_tmp
Leaving build/test environments:
  Test:
source activate  /home/user/miniconda3/conda-bld/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho
  Build:
source activate  /home/user/miniconda3/conda-bld/_build_env

Traceback (most recent call last):
  File "/home/user/miniconda3/lib/python3.8/site-packages/conda_build/environ.py", line 802, in get_install_actions
    actions = install_actions(prefix, index, specs, force=True)
  File "/home/user/miniconda3/lib/python3.8/site-packages/conda/common/io.py", line 88, in decorated
    return f(*args, **kwds)
  File "/home/user/miniconda3/lib/python3.8/site-packages/conda/plan.py", line 474, in install_actions
    txn = solver.solve_for_transaction(prune=prune, ignore_pinned=not pinned)
  File "/home/user/miniconda3/lib/python3.8/site-packages/conda/core/solve.py", line 114, in solve_for_transaction
    unlink_precs, link_precs = self.solve_for_diff(update_modifier, deps_modifier,
  File "/home/user/miniconda3/lib/python3.8/site-packages/conda/core/solve.py", line 157, in solve_for_diff
    final_precs = self.solve_final_state(update_modifier, deps_modifier, prune, ignore_pinned,
  File "/home/user/miniconda3/lib/python3.8/site-packages/conda/core/solve.py", line 281, in solve_final_state
    ssc = self._run_sat(ssc)
  File "/home/user/miniconda3/lib/python3.8/site-packages/conda/common/io.py", line 88, in decorated
    return f(*args, **kwds)
  File "/home/user/miniconda3/lib/python3.8/site-packages/conda/core/solve.py", line 815, in _run_sat
    ssc.solution_precs = ssc.r.solve(tuple(final_environment_specs),
  File "/home/user/miniconda3/lib/python3.8/site-packages/conda/common/io.py", line 88, in decorated
    return f(*args, **kwds)
  File "/home/user/miniconda3/lib/python3.8/site-packages/conda/resolve.py", line 1322, in solve
    self.find_conflicts(specs, specs_to_add, history_specs)
  File "/home/user/miniconda3/lib/python3.8/site-packages/conda/resolve.py", line 352, in find_conflicts
    raise UnsatisfiableError(bad_deps, strict=strict_channel_priority)
conda.exceptions.UnsatisfiableError: The following specifications were found to be incompatible with each other:

Output in format: Requested package -> Available versions

Package blas conflicts for:
rio-cogeo[version='>=2.3.0'] -> numpy~=1.15 -> blas[version='*|1.0|1.1|1.0',build='mkl|openblas|openblas|openblas']
fiona[version='>=1.8.19'] -> numpy[version='>=1.19.5,<2.0a0'] -> blas[version='*|1.0',build='mkl|openblas']

Package python conflicts for:
rio-cogeo[version='>=2.3.0'] -> click -> python[version='2.7.*|3.5.*|3.6.*|>=2.7,<2.8.0a0|>=3.6|>=3.6,<3.7.0a0|>=3.7,<3.8.0a0|>=3.8,<3.9.0a0|>=3.9,<3.10.0a0|>=3.5,<3.6.0a0|3.4.*|>=3|>=3.0']
rio-cogeo[version='>=2.3.0'] -> python[version='>3.6']
python

Package libgdal conflicts for:
fiona[version='>=1.8.19'] -> gdal -> libgdal[version='2.2.4|2.2.4|2.3.0|2.3.2|2.3.2|2.3.3|2.4.1|2.4.1|2.4.1|2.4.2|2.4.2|2.4.2|2.4.2|2.4.2|2.4.3|2.4.3|2.4.4|2.4.4|3.0.1|3.0.1|3.0.1|3.0.1|3.0.2|3.0.2|3.0.2|3.0.2|3.0.2|3.0.2|3.0.2|3.0.2|3.0.2|3.0.2|3.0.2|3.0.3|3.0.4|3.0.4|3.0.4|3.0.4|3.0.4|3.0.4|3.0.4|3.0.4|3.0.4|3.0.4|3.0.4|3.1.0|3.1.0|3.1.0|3.1.0|3.1.1|3.1.1|3.1.1|3.1.2|3.1.2|3.1.2|3.1.2|3.1.2|3.1.3|3.1.3|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.2.0|3.2.1|3.2.1|3.2.1|3.2.1|3.2.1|3.2.1|3.2.1|3.2.1|3.2.1|3.2.1|3.2.2|3.2.2|3.2.2|3.2.2|3.2.2|3.2.2|3.2.2|3.2.2|3.3.0|3.3.0|3.3.0|3.3.0|3.3.1|>=2.2.2,<2.3.0a0',build='hc8d23f9_1|heea9cce_1|heea9cce_1|h9d4a965_0|heae24aa_8|ha50d65d_9|hc4f5fd6_10|hbef8c27_4|h04a3d72_6|h182c168_7|h182c168_8|h2b6fda6_0|h5439ffd_1|hcf75f94_9|h3d260b8_0|h30a29e3_5|hefdf094_6|h20022a4_8|h20022a4_0|h022d3c0_1|h9e6407a_4|hbd881e9_7|h99f9e9c_8|he6a97d6_10|h4ed0dcf_3|h6687615_0|hb2a6f5f_1|hf6fc319_2|hb2a6f5f_3|h670eac6_1|h50e41a3_1|h96b6e7a_3|h0a4f56a_5|hbde00c8_6|h804b7da_10|h78c8158_11|h679344c_14|h3215d8d_15|h8f005ca_17|h2812452_0|h52563cd_1|h744752d_3|hbde00c8_5|h804b7da_0|h78c8158_1|hbf32332_4|h8f005ca_7|hbf32332_0|h679344c_1|h4dcd70e_2|h8f005ca_3|h8f005ca_0|h8f005ca_1|h4dcd70e_6|h679344c_5|hbf32332_3|h928efbf_2|h804b7da_9|h6636813_8|h38ff51b_7|he6eed4e_6|h0a4f56a_4|h96b6e7a_2|h24f7f85_0|h4dcd70e_16|hbf32332_13|h928efbf_12|h6636813_9|h38ff51b_8|he6eed4e_7|h744752d_4|h02eeb80_2|h670eac6_0|h670eac6_0|h670eac6_4|h6687615_2|h6687615_1|h4ed0dcf_0|h0b4441a_2|h2e1b11c_1|he6a97d6_0|h99f9e9c_9|h3dfc09a_6|h4f4a046_5|h94bbfbd_3|hce44138_2|h20022a4_0|hbe56659_7|h852c1c0_4|h5534617_3|hc7cfd23_2|h3d260b8_1|h7c14f60_1|h27ab9cc_0|h3d260b8_10|hf47eb90_8|h2bea7cd_7|h2f07a13_9|hd53ac37_8|h524de44_5|h2e7e64b_0|hda2fc8e_0']
fiona[version='>=1.8.19'] -> libgdal[version='>=3.2.2,<3.3.0a0|>=3.3.0,<3.4.0a0']

Package _libgcc_mutex conflicts for:
fiona[version='>=1.8.19'] -> libgcc-ng[version='>=9.3.0'] -> _libgcc_mutex[version='*|0.1',build='conda_forge|main|main']
python -> libgcc-ng[version='>=9.3.0'] -> _libgcc_mutex[version='*|0.1',build='conda_forge|main|main']

Package numpy conflicts for:
fiona[version='>=1.8.19'] -> gdal -> numpy[version='1.10.*|1.11.*|1.12.*|1.13.*|>=1.11|>=1.11.3,<2.0a0|>=1.14.6,<2.0a0|>=1.16.5,<2.0a0|>=1.16.6,<2.0a0|>=1.19.4,<2.0a0|>=1.19.2,<2.0a0|>=1.9.3,<2.0a0|>=1.18.5,<2.0a0|>=1.8|>=1.9|>=1.7|1.9.*|1.8.*']
fiona[version='>=1.8.19'] -> numpy[version='>=1.17.5,<2.0a0|>=1.19.5,<2.0a0']

Package click conflicts for:
fiona[version='>=1.8.19'] -> click-plugins[version='>=1.0'] -> click[version='>=3.0|>=4.0']
fiona[version='>=1.8.19'] -> click[version='>=4.0,<8']The following specifications were found to be incompatible with your system:

  - feature:/linux-64::__glibc==2.27=0
  - feature:|@/linux-64::__glibc==2.27=0
  - python -> libgcc-ng[version='>=9.3.0'] -> __glibc[version='>=2.17']

Your installed version is: 2.27

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/miniconda3/bin/conda-build", line 11, in <module>
    sys.exit(main())
  File "/home/user/miniconda3/lib/python3.8/site-packages/conda_build/cli/main_build.py", line 481, in main
    execute(sys.argv[1:])
  File "/home/user/miniconda3/lib/python3.8/site-packages/conda_build/cli/main_build.py", line 470, in execute
    outputs = api.build(args.recipe, post=args.post, test_run_post=args.test_run_post,
  File "/home/user/miniconda3/lib/python3.8/site-packages/conda_build/api.py", line 186, in build
    return build_tree(
  File "/home/user/miniconda3/lib/python3.8/site-packages/conda_build/build.py", line 3068, in build_tree
    packages_from_this = build(metadata, stats,
  File "/home/user/miniconda3/lib/python3.8/site-packages/conda_build/build.py", line 2108, in build
    create_build_envs(top_level_pkg, notest)
  File "/home/user/miniconda3/lib/python3.8/site-packages/conda_build/build.py", line 1986, in create_build_envs
    raise e
  File "/home/user/miniconda3/lib/python3.8/site-packages/conda_build/build.py", line 1965, in create_build_envs
    environ.get_install_actions(m.config.test_prefix,
  File "/home/user/miniconda3/lib/python3.8/site-packages/conda_build/environ.py", line 804, in get_install_actions
    raise DependencyNeedsBuildingError(exc, subdir=subdir)
conda_build.exceptions.DependencyNeedsBuildingError: Unsatisfiable dependencies for platform linux-64: {"libgdal[version='>=3.2.2,<3.3.0a0|>=3.3.0,<3.4.0a0']", "blas[version='*|1.0',build='mkl|openblas']", "python[version='2.7.*|3.5.*|3.6.*|>=2.7,<2.8.0a0|>=3.6|>=3.6,<3.7.0a0|>=3.7,<3.8.0a0|>=3.8,<3.9.0a0|>=3.9,<3.10.0a0|>=3.5,<3.6.0a0|3.4.*|>=3|>=3.0']", "python[version='>3.6']", "numpy[version='>=1.17.5,<2.0a0|>=1.19.5,<2.0a0']", "libgdal[version='2.2.4|2.2.4|2.3.0|2.3.2|2.3.2|2.3.3|2.4.1|2.4.1|2.4.1|2.4.2|2.4.2|2.4.2|2.4.2|2.4.2|2.4.3|2.4.3|2.4.4|2.4.4|3.0.1|3.0.1|3.0.1|3.0.1|3.0.2|3.0.2|3.0.2|3.0.2|3.0.2|3.0.2|3.0.2|3.0.2|3.0.2|3.0.2|3.0.2|3.0.3|3.0.4|3.0.4|3.0.4|3.0.4|3.0.4|3.0.4|3.0.4|3.0.4|3.0.4|3.0.4|3.0.4|3.1.0|3.1.0|3.1.0|3.1.0|3.1.1|3.1.1|3.1.1|3.1.2|3.1.2|3.1.2|3.1.2|3.1.2|3.1.3|3.1.3|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.1.4|3.2.0|3.2.1|3.2.1|3.2.1|3.2.1|3.2.1|3.2.1|3.2.1|3.2.1|3.2.1|3.2.1|3.2.2|3.2.2|3.2.2|3.2.2|3.2.2|3.2.2|3.2.2|3.2.2|3.3.0|3.3.0|3.3.0|3.3.0|3.3.1|>=2.2.2,<2.3.0a0',build='hc8d23f9_1|heea9cce_1|heea9cce_1|h9d4a965_0|heae24aa_8|ha50d65d_9|hc4f5fd6_10|hbef8c27_4|h04a3d72_6|h182c168_7|h182c168_8|h2b6fda6_0|h5439ffd_1|hcf75f94_9|h3d260b8_0|h30a29e3_5|hefdf094_6|h20022a4_8|h20022a4_0|h022d3c0_1|h9e6407a_4|hbd881e9_7|h99f9e9c_8|he6a97d6_10|h4ed0dcf_3|h6687615_0|hb2a6f5f_1|hf6fc319_2|hb2a6f5f_3|h670eac6_1|h50e41a3_1|h96b6e7a_3|h0a4f56a_5|hbde00c8_6|h804b7da_10|h78c8158_11|h679344c_14|h3215d8d_15|h8f005ca_17|h2812452_0|h52563cd_1|h744752d_3|hbde00c8_5|h804b7da_0|h78c8158_1|hbf32332_4|h8f005ca_7|hbf32332_0|h679344c_1|h4dcd70e_2|h8f005ca_3|h8f005ca_0|h8f005ca_1|h4dcd70e_6|h679344c_5|hbf32332_3|h928efbf_2|h804b7da_9|h6636813_8|h38ff51b_7|he6eed4e_6|h0a4f56a_4|h96b6e7a_2|h24f7f85_0|h4dcd70e_16|hbf32332_13|h928efbf_12|h6636813_9|h38ff51b_8|he6eed4e_7|h744752d_4|h02eeb80_2|h670eac6_0|h670eac6_0|h670eac6_4|h6687615_2|h6687615_1|h4ed0dcf_0|h0b4441a_2|h2e1b11c_1|he6a97d6_0|h99f9e9c_9|h3dfc09a_6|h4f4a046_5|h94bbfbd_3|hce44138_2|h20022a4_0|hbe56659_7|h852c1c0_4|h5534617_3|hc7cfd23_2|h3d260b8_1|h7c14f60_1|h27ab9cc_0|h3d260b8_10|hf47eb90_8|h2bea7cd_7|h2f07a13_9|hd53ac37_8|h524de44_5|h2e7e64b_0|hda2fc8e_0']", "_libgcc_mutex[version='*|0.1',build='conda_forge|main|main']", "blas[version='*|1.0|1.1|1.0',build='mkl|openblas|openblas|openblas']", "click[version='>=3.0|>=4.0']", "numpy[version='1.10.*|1.11.*|1.12.*|1.13.*|>=1.11|>=1.11.3,<2.0a0|>=1.14.6,<2.0a0|>=1.16.5,<2.0a0|>=1.16.6,<2.0a0|>=1.19.4,<2.0a0|>=1.19.2,<2.0a0|>=1.9.3,<2.0a0|>=1.18.5,<2.0a0|>=1.8|>=1.9|>=1.7|1.9.*|1.8.*']", 'feature:/linux-64::__glibc==2.27=0', 'feature:|@/linux-64::__glibc==2.27=0', "__glibc[version='>=2.17']"}

I have following Python project as an example:
.
├── meta.yaml
├── package
│   ├── __init__.py
│   └── __main__.py
├── README.md
└── setup.py

meta.yaml
{% set data = load_setup_py_data(setup_file="./setup.py", from_recipe_dir=True, recipe_dir=RECIPE_DIR) %}

package:
  name: "{{ data['name'] }}"
  version: "{{ data['version'] }}"

source:
  path: ./

build:
  noarch: python
  number: 0
  string: build_string
  script: "{{ PYTHON }} setup.py install --single-version-externally-managed --record=record.txt"
  entry_points:
    {% for script in data['entry_points']['console_scripts'] %}
    - {{ script }}
    {% endfor %}

requirements:
  build:
    - python
  host:
    - python
  run:
    - python
    {% for requirement in data['install_requires'] %}
    - {{ requirement.lower() }}
    {% endfor %}

package/__main__.py
import rio_cogeo
import fiona

def main():
    print("Works")

README.md
conda deactivate
conda build purge-all
conda create -n conda_env -y
conda activate conda_env
conda build ./ -c conda-forge
conda install --use-local conflicting -c conda-forge -y
conflicting

setup.py
from setuptools import find_packages, setup

setup(
    name="conflicting",
    version="1.0.0",
    description="Dependencies conflicting",
    python_requires=">=3.8",
    install_requires=[
        "fiona >=1.8.19",
        "rio-cogeo >=2.3.0",
    ],
    packages=find_packages(),
    entry_points={
        "console_scripts": [
            "conflicting = package.__main__:main",
        ]
    },
)

@JoakimJoensuu I'm sorry for the trouble. We do not manage the rio-cogeo conda package, and as far as I know I never had any trouble having both fiona and rio-cogeo installed on my python env.
I think you should report this issue on the conda repo 🤷♂

@vincentsarago
I'll report the issue there.
Thanks anyway! 🙌🏻

@JoakimJoensuu and others finding this issue. Conda is an agnostic package manager, so your gdal is also manage by it instead of a static bundled with rasterio. So you will get the version that is compatible with rasterio metadata. You won't see that conflict with wheels b/c each one, fiona and rasterio, will bring their own gdal and also b/c pip did not had a version solver up to recently.
TL;DR it is not really an issue, conda is only allowing you to see that you are getting in a more transparent way. Also, https://github.com/conda-forge/rio-cogeo-feedstock/pull/27 should've have fixed it b/c it will bring latest rasterio with latest gdal into the mix.
PS: fiona is always ahead of rasterio when it comes to supporting newer gdal, so that can happen again in the future.


Instance creation hangs on "Waiting for SSH to become available..."

I'm using Vagrant 1.1.0 and v0.1.0 of the vagrant-aws plugin. When I try to create an EC2 instance, the creation process gets hung up on "Waiting for SSH to become available...". However, the instance is created and I can see it in my EC2 Dashboard.
Here is my (redacted) Vagrantfile...
Vagrant.configure("2") do |config|
  config.vm.define :testbox do |testbox|
    testbox.vm.box = 'dummy'
    testbox.ssh.username = 'ubuntu'

    testbox.vm.provider :aws do |aws|
      aws.access_key_id = 'KEY'
      aws.secret_access_key = 'ACCESS_KEY'
      aws.keypair_name = 'vagrant-east1'

      aws.ssh_private_key_path = '/home/patrick/.ssh/vagrant-east1.pem'
      aws.ssh_username = 'ubuntu'
      aws.region = 'us-east-1'
      aws.ami = 'ami-de0d9eb7'
      aws.instance_type = 't1.micro'

      aws.tags = {
        Name: 'Vagrant AWS Precise'
      }
    end
  end
end

And here is the output I'm seeing...
patrick@patrick-pangolin:/opt/vagrant-aws$ vagrant up --provider=aws
Bringing machine 'testbox' up with 'aws' provider...
[testbox] Warning! The AWS provider doesn't support any of the Vagrant
high-level network configurations (`config.vm.network`). They
will be silently ignored.
[testbox] Launching an instance with the following settings...
[testbox]  -- Type: t1.micro
[testbox]  -- AMI: ami-de0d9eb7
[testbox]  -- Region: us-east-1
[testbox]  -- Keypair: vagrant-east1
[testbox] Waiting for instance to become "ready"...
[testbox] Waiting for SSH to become available...

I've tried this in the "us-west-2" and "us-east-1" regions with the same result. I must be doing something wrong, but I have no idea what it is.

If you are using Mac, your private key has passphrase, and you have stored your passphrase in keychain (with ssh-key -K,) you have to place public key (.pub file) on the same directory of the private key.
I couldn't figure out why this happen, but according to debug log it said ssh couldn't read the private key. With some googling, I eventually found this StackOverflow answer so I put corresponding public key there, then the problem disappeared.

I think if you follow the instructions AWS gives at http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/building-shared-amis.html on securing your AMI, where they tell you to disable root login with
sudo passwd -l root (and)
sudo shred -u /etc/ssh/*_key /etc/ssh/*_key.pub
this breaks Vagrant's ability to log in as root in order to first establish ssh connections. (But I may not understand completely what is happening 'under the hood') - if anyone can confirm this, would help, because I just tried the suggestions and am in the same boat waiting forever for SSH, only this time I know what I did to break it. :)

This fixed it for me
Vagrant.configure("2") do |config|
    config.vm.provider :aws do |aws, override|
        override.ssh.username = "ubuntu"
    end
end

I had the same issue (Waiting for SSH to become available...) but my problem was that the admin username in config.yaml was
username: admin
instead of
username: ubuntu

I'm having issues with this still - can anyone confirm if its the security group ID I need, or the description - and also do I need single quotes or double quotes in the array (i've seen both examples). I'm using Windows.

Please check your bios setting if your computer allows 64-bit virtualization.

I too am hitting this.  Host OS is Windows 10.  Trying to start up a Windows Server 2012 R2 based completely on the Packer scripts with only changes for my license key and the ISO location on disk.

Wanted to throw out my thanks for this thread. Ran into the same problem of not being able to connect to the instance and changing the default security group as mentioned above fixed my issue.

I was having this issue as well. My company's security policies prevent me from creating an instance which has 22 opened to the world, but I can tunnel through another AWS instance in order to access the instance that vagrant brings up. I have an SSH config file (~/.ssh/config) which sets this tunnel up automatically on any EC2 connection, but vagrant doesn't seem to be reading it. Curious if there's a way to make vagrant aws read the ssh config file, or some other way to set extra options on its SSH command? I didn't see anything like this in the README.

Hello Guys,
I am facing similar problem.please help me to resolve the error
[root@ip-172-31-19-169 vagrant_test]# vagrant up --provider=aws
Bringing machine 'default' up with 'aws' provider...
==> default: Warning! The AWS provider doesn't support any of the Vagrant
==> default: high-level network configurations (config.vm.network). They
==> default: will be silently ignored.
==> default: Warning! You're launching this instance into a VPC without an
==> default: elastic IP. Please verify you're properly connected to a VPN so
==> default: you can access this machine, otherwise Vagrant will not be able
==> default: to SSH into it.
==> default: Launching an instance with the following settings...
==> default:  -- Type: m3.medium
==> default:  -- AMI: ami-c998b6b2
==> default:  -- Region: us-east-1
==> default:  -- Keypair: guruom_northv
==> default:  -- Subnet ID: subnet-70d7a338
==> default:  -- Security Groups: ["sg-955540e5"]
==> default:  -- Block Device Mapping: []
==> default:  -- Terminate On Shutdown: false
==> default:  -- Monitoring: false
==> default:  -- EBS optimized: false
==> default:  -- Source Destination check:
==> default:  -- Assigning a public IP address in a VPC: true
==> default:  -- VPC tenancy specification: default
==> default: Waiting for instance to become "ready"...
==> default: Waiting for SSH to become available...
Execution stuck here and not moving forward.
my Vagrant file is as below
Vagrant.configure("2") do |config|
config.vm.box = "dummy"
config.vm.provider :aws do |aws, override|
aws.access_key_id = "AKIAIETI6RM6RKS6XMEQ"
aws.security_groups = "sg-955540e5"
aws.subnet_id = "subnet-70d7a338"
aws.associate_public_ip = true
aws.secret_access_key = "4C0TIFMBIJs0/DR00aLiJysnUBUeW4pqiYBx2eX/"
aws.keypair_name = "guruom_northv"
aws.region = "us-east-1"
aws.ami = "ami-c998b6b2"
override.ssh.username = "ec2-user"
override.ssh.private_key_path = ENV['AWS_PRIVATE_KEY']

end
end

None of the above solution is working for me

For me it was a change to override.ssh.username = "ubuntu" to another usename that made this error happen. Either keep "ubuntu" or change the ownership of the KeyPair.

Right again. I was using the "default" security group, but I created another one called "vagrant" and opened up port 22 to the universe. Then I added this line in the AWS provider section of my Vagrantfile...
aws.security_groups = [ 'vagrant' ]

The instance was created without any issue and I was able to SSH into it immediately. Thanks so much for your help! I'm actually doing a talk on Vagrant and Puppet tomorrow afternoon at Boise Code Camp, so I'm really glad this example is working now. :)

Yeah, that did the trick for me too!


error in demons_prep

This error comes in allenAtlasBrowser when calling  imref = normalize(feature2_comp(imref, [], [], denomref / 1.2));
Unable to perform assignment because the left and right sides have a
different number of elements.

Error in demons_prep (line 17)
    tmp(tmp == 0) = min(tmp(tmp > 0));

Error in feature2_comp (line 36)
        mxpsig(:, :, i) = demons_prep(basecur, mag, denom);

The tmp variable is only NaNs

Fixed with NaN flag in median call:
median(tmp(:),'omitnan'));


use background colors as defaults instead

current colors don't stand out enough

have error default to bgRed and warning to bgYellow, etc


Semi-circular references

I ran into a problem today where an object wasn't getting freed. It turned out this was because its native pointer struct held acquired references to "listener" functions which in turn were bound to a scope object that held the original object as a property. I had to dig deeply into the GC today to learn about these things; before I had assumed that once refcounts went to 0, it would be freed. But there are essentially these "weak references" of 10 different types I see in gc_mark().
Anyway, I had been expecting when the reference count went to zero I would get my type_info's free_cb() called and that was where I was releasing these listener functions. It seems to me now that for this kind of case, there should perhaps be release_cb() in the type_info as well. I'm thinking when my refcount drops to zero I could probably release my own references like this. But maybe I'm wrong, it's a bit confusing.
I could use advice if there's another way to solve this. Previously we had implemented a "hidden property" to store an array of listeners; so these were held by "property reference" and disappeared. But this hidden property implementation was also something of a hack of JerryScript and a clever JS user could maybe have accessed it. So another good way to solve this might be for JrS to provide a way to define properties on objects that are hidden to JS and visible only from C APIs. I wonder if others have desired these same things?

What about storing an objects in the structure pointed by the private property? I am not sure I understand the circular part.

Hmm, I think I follow, but just to summarize:

You've a JS object "O" that is "backed" by a native struct.
The object has a setter which is implemented with a native handler.
The setter is used to set a function object (callback).
The native handler acquires the value (function) that is being set (the refcount is +1'd) and stores the jerry_value_t in the native struct.
The function that is being set (indirectly) references the JS object "O".
At some point, there are no references any more from the JS code to "O" nor to the function. Yet, the native side does not become aware that JS no longer references them and the function is still "acquired", therefore the GC does not free the JS object, function and native pointer.

I've ran into this issue before too. I don't have a great answer unfortunately.
I think what's missing is an API to express that one JS object holds/releases a reference to another JS object and where C would hold a "weakly referenced" jerry_value_t to the second JS object.
jerry_acquire_value () and jerry_release_value () express that "something in C land" acquires/releases a JS object (strong reference).
A "work-around" that we are using is to move the ownership to JS entirely. It's possible to make the internal variables inaccessible by using closures, for example:
function MyConstructor() {
  function AddMyListener() {
    var myListenerCb;
    this.setMyListener = function(listener) {
      myListenerCb = listener;
    }
    // native binding will call dispatchEventToMyListener(e) whenever it needs to,
    // but it does not call jerry_acquire_value () on anything.
    this.dispatchEventToMyListener = function(e) {
      myListenerCb(e);
    }
  }
  nativeConstructor.call(this);
  AddMyListener.call(this);
}

@martijnthe about your "weak reference", I think it is quite similar with @grgustaf 's "hidden property", right? Only native code can access the "properties", and GC will mark those property as "visited".

Sure, I just tried to distill the problem to the essence.
Having "hidden properties" sounds like you would have to do property look-ups, which would be much more expensive compared to having a direct but weak jerry_value_t in the C struct that backs the JS object.

Ok, so the problem is: there is a circular reference between objects, and this circular reference is caused by native handlers. Since native handlers can only create strong references, the engine keeps these objects alive.
Perhaps weak references could be created by not referencing these objects in the native side. As long as they are used, they will be kept alive. When destroyed, their native free callback can drop these weak references. When the object is temporarily used for something (e.g. setting its property), just acquire / release a strong reference to it.
The problem with hidden properties is that names can collide. E.g. if your O object has a private and public .x member, the engine will not be able to tell the difference.

Yes, you've all understood the issue exactly.
@zherczeg if I'm understanding your last comment, I don't think it works. The object in question represents a network connection. So JS signs up for various callbacks, and then forgets about the object. The callbacks will still be called - the case I'm trying to handle is when the network connection is closed; I have no way to free things up. I'll experiment with manually releasing all the references at the time the connection is closed.

Perhaps weak references could be created by not referencing these objects in the native side.

I can't just not acquire those callback functions, because I'm the only one who holds a reference to them - they would simply be freed if I didn't acquire them.

This does not sound difficult. The C struct of the N network connection has a reference counter, and each native callback increases the reference count. It also has a status member which tells whether the connection is closed. Callbacks do different things when the connection is closed. And you only free things up when the reference counter reaches zero. Basically you don't create a reference to a JS object, instead the private C struct has a reference counter.

They're not native callbacks, they're JS callbacks - an anonymous function only passed to my setter. So there are no other references to it but one that I make in C. If I don't acquire it, it will be immediately freed the next time the GC runs.
It does appear I can solve my dilemma by releasing the callback(s) when the connection is closed.
But it seems like it would be nice for me if I were able to make a weak reference to the JS callback instead, so that once my connection object drops to zero, they would both get freed together. I guess a weak reference requires directionality "obj A is referred to by obj B", while strong references are global "obj A is referred to by someone". So it would probably be something like jerry_weak_acquire_value(obj_a, obj_b). And then in ecma_gc_mark for obj_a, obj_b would get marked.
Basically, this would give the API user the same kind of flexibility you have internally. But I guess it's just nice to have; I'm not sure if some situation truly requires it.

I can imagine a jerryx extension for this purpose. These references could be stored in a shadow JS object, which is not accessible from JS side (only C side). A new private property type could refer to such shadow object. These objects are also marked by GC.

@zherczeg I dont think jerryx can handle this issue, because we need to change the

ecma-object struct by adding a new field called weak_ref or hidden_property, which is a list of pointers to other ecma-object
add api like jerry_weak_acquire/release(obj_a, name_b, obj_b) or jerry_set/get/remove_hidden_property(obj_a, name_b, obj_b) to add the target b into the above list. This operation will NOT cause any change of the ref count.
in GC mark, when obj_a is marked, we should mark all objs in its weak_ref list.
All above 3 things need to change the jerry-core

@grgustaf is this what you want?

I'm not sure if name_b is really necessary.
Often you already have a C struct "backing" the JS object which has a jerry_value_t obj_b, for example in @grgustaf 's example I think it's the jerry_value_t connect_listener here: https://github.com/01org/zephyr.js/blob/master/src/zjs_net.c#L109
I guess you could remove it and only use get/set by string name (i.e. jerry_set/get/remove_hidden_property(obj_a, name_b, obj_b)) but it feels a bit wasteful to me (property lookups in general are of course much slower than accessing a field in a C struct and you need to create Jerry strings all the time / keep them around).

in GC mark, when obj_a is marked, we should mark all objs in its weak_ref list.
All above 3 things need to change the jerry-core

How about the other way around? If obj_b is marked, will obj_a also get marked?
jerry_weak_acquire/release: probably need a better name :) couple/decouple? associate/deassociate?

I guess you could remove it and only use get/set by string name

Yes, that is exactly what I thought. In this way, we provide a choice that users dont need to track the obj_b in native code. For the name string, we could allow it be undefined, if users decide to track obj_b in native.  But that is just my preference.

How about the other way around? If obj_b is marked, will obj_a also get marked?

No. to GC, obj_b is obj_a's property.

A GC change increase the binary size even for those, who don't want to use this feature. As usual, I would prefer a very simple API in core, and something user friendly in jerryx.
This would be my proposal:
core:
jerry_set_referenced_object(object_a, object_b); /* if object_b is undefined, the internal property is deleted */
jerry_get_referenced_object(object_a); /* undefined or object */
When object_a is marked, object_b (and its properties) are also marked. From implementation perspective this would be another private magic string.
jerryx:
You can create a nice interface with names, etc.

When object_a is marked, object_b (and its properties) are also marked.

How can it be implemented without changing the gc?

The gc will be changed. But the change will be small.

Naming the objects holder and held or some similar word pair might make things clearer. (Other brainstorms I liked even less: user/used knower/known referrer/referent.)
As an alternative, I do still wonder if it might make sense to notify when refcount drops to zero, with a second callback in the type_info. If I was notified when refcount went to zero, I could free up any hard references I hold and break these circular dependencies that way. Which of these models is easier for the programmer to grasp? The callback could be called "release_references_cb" perhaps... the time for me to stop referring to any other JS objects on behalf of this one. Is this more or less overhead to implement?

@grgustaf I doubt the refcount  zero callback can resolve the solution. For example, see https://github.com/jerryscript-project/jerryscript/issues/1963#issuecomment-322135869 case, the object "O"'s refconunt is always 0 after its being created.


feat(translation): using multilanguage features with Serenity/JS

This PR is just meant to start a discussion about this topic.
My main use case is having an application that supports multiple user languages. While the use cases stay the same, we have to locate page elements by a text in a different language or ensure, that the text of a page element is displayed in the right language.
Until now I have a translateTo function which takes an array of objects like
Const customTranslations = {
  SAVE: {
	En_Us: “Save”,
	De_Ch: “Speichern”,
	Fr_Ch: “Enregistrer”
   }
}

(See Gitter discussions, https://gitter.im/serenity-js/Lobby?at=611662b9f31bc0605a5e25b0)
I have a global configuration file, where the global locale for all test runs is set. But the requirement is to be able to set another locale for a certain test spec only, as well. (At the moment, this is just a simple reset of the locale from the global config object within the spec.)
Normally I’d put my Tasks and PageElements into classes. I try to separate my tests:

In my specs I just use Tasks that are imported from my Task classes. I try not to import any PageElements into the spec files directly.
In my Task classes  I import from the PageElement classes.

Having the requirement to be able to change the locale from a certain test spec (and for this test spec only) I have to “inject” the locale into the Task class constructors and then into the PageElements class constructors as well and init the translateTo function with the right locale (and set of translation objects).
Hence, I cannot really use static PageElements or constants as this translate object has to be initialised each time before I can use it in a locator strategy like .where(Text, t(‘SAVE’)) for example.
So every time I have to import from a Task class in my specs I have to create a new instance in of it, what could become quite nasty when importing from more classes. Every time I write a new Task or PageElement class I have to ensure, that the translate object is initialised.
I tried to think my use case the Serenity/JS way. Isn’t it the Ability of an Actor to SpeakALanguage? Would it not be a an interaction to Learn.newVocabulary(<<object>>) and a Question to Translate.usingPlaceholder(‘SAVE’)
I started an experiment which already is functional, but I still have problems to use this in some locators, but I think I messed something up with return types, we can discuss this later.
Before I continue I’d like to get you opinion if I’m on the right path and if such a thing would be worth a contribution to Serenity/JS?

@jan-molak Not even sure, if you get informed by mail when just a draft for a PR is created.

Hey! Thanks for the ping, no, GitHub doesn't seem to send notifications for draft PRs

I tried to think my use case the Serenity/JS way. Isn’t it the Ability of an Actor to SpeakALanguage?
Would it not be a an interaction to Learn.newVocabulary(object) and a Question to Translate.usingPlaceholder('SAVE')

Yes, I'd approach it this way too. I like the idea of using an ability for that; it has to hold some state, so this sounds like a good way to do it.
For example, given our actor had an ability to Translate, for example:
actorCalled('Travis')
  .whoCan(Translate.using(dictionary))

Where En_Us is the language we will express our tests in, and Dictionary is something of this shape:
{
  'Save': {
    En_Us: 'Save',
    De_Ch: 'Speichern',
    Fr_Ch: 'Enregistrer'
  }
}

And assuming that the website is in De_Ch and the tests are in En_Us.
We could have a question, say Translation, that translates any string using that dictionary:
  Ensure.that(Translation.to('En_Us').of(Text.of(...)), equals('Save'))

which offers good flexibility since we don't need to care about the language the website is currently in.
Or do it on the expectation side too if we wanted:
  Ensure.that(Text.of(...), equals(Translation.to('De_Ch').of('Save')))

We could also have a way to specify a "default" language when defining the ability
actorCalled('Travis')
  .whoCan(Translate.using(dictionary, 'En_Us'))

Then it could be simplified further:
  Ensure.that(Translation.of(Text.of(...)), equals('Save'))
  Ensure.that(Text.of(...), equals(Translation.of('Speichern')))

Using of would also allow us to make Translation a MetaQuestion<Answerable<string>>, so it would work in both Web and API tests...

We could also have a way to specify a "default" language when defining the ability

Agreed.

I think injecting a dictionary might be easier than providing each translation individually, since this way it could be stored in a JSON file or sth like this.

Agreed. I assume my examples in my test specs are a bit misleading. The reason why I would like to use an array of dictionaries: I still have a external Serenity/JS library which servers shared Tasks, PageElements and a shared dictionary as well.
I have (for now) two separate test projects for different modules. Both module use the "outer" application framework and therefore make use of the common library - and the common translations. But each module has its very specific set of translations (or even each task  or page elements class). So with an array of dictionaries I can inject more than just one object.
Also agreed, that it could be some JSON. I would even like to see some typed dictionary because it's easy to mess up with the translation strings, so an IDE support would be nice. But maybe your approach will mitigate this problem a bit.
Okay, so let's talk about the nature of the dictionary later. I got another point I struggle with.
So, given, we have an Ability called Translate:
import { Ability, AnswersQuestions, UsesAbilities } from '..';
import { LogicError } from '../../errors';
import { formatted } from '../../io';

export class Translate implements Ability {
    constructor(private readonly dictionaries: Array<unknown>, private readonly locale: string) { }

    private translations: unknown;

    static as(actor: UsesAbilities & AnswersQuestions): Translate {
        return actor.abilityTo(Translate);
    }

    static using(dictionaries: Array<unknown>, locale: string) {
        return new Translate(dictionaries, locale)
    }

    translate(translationString: string): Promise<string> {
        try {
            return this.translations[translationString][this.locale] ?? [translationString][this.translations['en_US']];
        } catch (error) {
            throw new LogicError(formatted`Translation error for "${translationString}" and locale "${this.locale}": ${error}`)
        }
    }
}

The pure logic - in my example the translate method - will still stay in the ability, right? Or would this be an Interaction?
Than I really struggle how to implement the MetaQuestion interface. How the of has to be implemented?
Sorry for still not having a complete picture of the framework.

Also agreed, that it could be some JSON. I would even like to see some typed dictionary because it's easy to mess up with the translation strings, so an IDE support would be nice. But maybe your approach will mitigate this problem a bit.

Thinking about it, rather than hand-rolling our own standard, perhaps we could consider some XLIFF-compatible "shape" for the dictionaries. Many (most?) translation tools are compatible with it, and there's a NPM xliff module that we could use to transform dictionaries to and from XLIFF.
I think often when the system under test is translated by a 3rd party, translations might be provided in this standard, so Serenity/JS could load a dictionary that the main system is using...
I'm not sure if that's a good idea or not, just thinking aloud really.

The pure logic - in my example the translate method - will still stay in the ability, right?

Yes, pretty much. An ability would handle the dictionaries and retrieve/look up specific translations. The question would be just an adapter between abilities and anything that needs that data.

Following your suggestions, I've created a draft of an Ability and a Question that implements MetaQuestion. I also enhanced the tests for this. Code is not documented, yet. Would appreciate if you could do a general review of it.
Don't know why SauceLabs Pipeline fails, probably some permission issues.
It was also not intended to mark this draft PR as 'Ready for Review' but I clicked the button accidentally - and did not find a way back .... :)

Thinking about it, rather than hand-rolling our own standard, perhaps we could/should consider some XLIFF-compatible "shape" for the dictionaries.

I was not aware that there is a standard for this. Before I started with my own translateTo function I looked into something like https://www.npmjs.com/package/i18next. I thought the same as you, why to create own things, instead of using existing stuff.
But than I found, that all those things would be over the top for my usage. As I separate some shared translations from the module specific translation and as I won't check every possible translation in the UI, my lists stay rather small.
Then I thought of my fellow testers, who would have to learn the next fancy syntax how to get things translated. This is where I appreciated the simple translateTo approach, you suggested me once.

I think often when the system under test is translated by a 3rd party, translations might be provided in this standard, so Serenity/JS could load a dictionary that the main system is using...

This was something I first thought about as well. Well, not exactly the same way, not the way with the XLIFF files. But why not use the string lists from the application (as most of the strings would/should be dynamic translations as well.
Again, this was a bit over the top, given the thoughts I shared before.
Last but not least, I tried to reduce npm dependencies instead of increasing them, lately ...
Maybe the current solution of the const translations object is not the best choice and can be optimized. But  the solution is a quite simple one, obviously working well with just some lines of code.
But as Serenity/JS is becoming an "agnostic" tool, maybe there would be an extendible approach as well.
actor.whoCan(Translate.using('XLIFF').with(<<whatever would be necessary here>>));
// or
actor.whoCan(Translate.using('CustomFormat').with(<<whatever would be necessary here>>));

Hi @jan-molak, what do you think about this (last comment) ?
In addition, I notices some unexpected behaviour: How are the names of the actors connected to the actors I engage? Though I engage new actors before each step in the specs "Heidi" answers with 'de_CH' no matter if I put her in the UsAmerican or in the Swiss German spec?
https://github.com/viper3400/serenity-js/blob/2b5b9d995db8d41c3d02b48ebbc46021da98a395/packages/core/spec/screenplay/TranslationUSAmericanActor.spec.ts#L66

Don't know why SauceLabs Pipeline fails, probably some permission issues.

Looks like we need to limit running sauce tests to pull requests and branches originating from the main monorepo. Let me see if I can fix that.

But as Serenity/JS is becoming an "agnostic" tool, maybe there would be an extendible approach as well.

Yeah, that's a good point. You could see it work similarly to @serenity-js/web et al. 🤔
Then this PR becomes a standalone Serenity/JS plugin... 🤔 OK, before the scope creep creeps in, let's start small and see where we end up 😄

In addition, I noticed some unexpected behaviour: How are the names of the actors connected to the actors I engage? Though I engage new actors before each step in the specs "Heidi" answers with 'de_CH' no matter if I put her in the UsAmerican or in the Swiss German spec? I thought this were just strings for the reporting and to be able to distinguish the actors in the test specs, but now it seems, as they where somehow tied to the Actor object?

That's right, each Actor has a property name used to identify that actor and to ensure that calling actorCalled('Heidi') several times in the same test scenario returns the same instance of that actor. The first call to actorCalled('Heidi') instantiates and "caches" it, and subsequent call to actorCalled('Heidi') retrieves the instantiated actor.
Have a look at the Stage to see how this works internally.
The reason for this is so that people could write Cucumber scenarios like this:
Given Heidi ...
 When Heidi ...
 Then Heidi ...

where each Cucumber step references the same actor by their name.
Does this make sense?

Don't know why SauceLabs Pipeline fails, probably some permission issues.

I think it should be fixed now on main. Could you rebase, please?

I think it should be fixed now on main. Could you rebase, please?

Thanks, I will do this as soon as possible.

Making it a factory method on Translation could make it easier for people to find.

What do you have in mind? Something like that? Just provide a method in Translation to return the question?

I think it should be fixed now on main. Could you rebase, please?

Fixed.


Draft up requirements based on latest conversation

Here is a draft in progress for documenting what the purpose of the software is and what we expect it to do (the "requirements"). It is still a work in progress. Things in here so far are based on our most recent email threads as well as some ideas taken from my private notes.
This was drafted up as a way of getting the project started and as a starting point for more discussion. Feedback is welcome!
Rendered document

The requirements list (under "unresolved questions") that some conferences like to bend requirements/conventions. It would be helpful to have all of the variations (that we're aware of) documented. This would help when designing the data structure so that we don't accidentally preclude a variation. I'm not opposed to deciding that we're not going to support a particularly variation, but I think it would be better to make that choice intentionally

Good idea; such a list might be difficult to gather comprehensively, but that's definitely a good way to ensure that we don't end up with something that one or more conferences aren't able to use.
Something I've just thought about is how the rules are enforced as far as the software is concerned. We could have non-compliant tournament configurations be considered "validation warnings" but without preventing you from proceeding with the tournament anyway. Generally making things configurable also helps.


[BUG] Swin Transformer returns random outputs

Swin Transformer returns different results every forward pass.
from timm.models import swin_base_patch4_window7_224_in22k
model = swin_base_patch4_window7_224_in22k(pretrained=True,num_classes=1000)
model.eval()

print(model(input_tensor)[0, 281])
print(model(input_tensor)[0, 281])

The network returns different scores every time I run.
Am I doing something wrong?

How did you solve it？

@iuhiyuh In this case, when num_classes=1000 was passed, it overwrote the default classifier with a freshly initialized head, which means the model's classifier layer is now random. To get the predictions from the original pre-trained head (over 21841 Classes), you'd want to omit num_classes=1000. So...
import timm

model = timm.create_model('swin_base_patch4_window7_224_in22k', pretrained=True)

@iuhiyuh In this case, when num_classes=1000 was passed, it overwrote the default classifier with a freshly initialized head, which means the model's classifier layer is now random. To get the predictions from the original pre-trained head (over 21841 Classes), you'd want to omit num_classes=1000. So...
import timm

model = timm.create_model('swin_base_patch4_window7_224_in22k', pretrained=True)

hi,
I tried your method, but it does not work, the output is also random, how it happened


Add TEST_ASSUME macro to allow skipping tests at runtime

Summary: This PR adds a macro TEST_ASSUME to the test infrastructure which allows to skip tests based on unmet conditions determined at runtime.

To validate this, I'd like to see at least one test that is skipped in at least one configuration and not skipped in another configuration.

@gilles-peskine-arm I pushed a commit to exemplify how TEST_ASSUME can be used. Please review.


Changing client ID & Secret will cause Azure host to fail if new one is valid or create if invalid

**Rancher Version:**v1.2.0-pre3
Steps to Reproduce:

Setup an Azure host with all the proper credentials
Setup another Azure host, leave the subscription ID in, but change the Client ID and Secret to aaa

Results: Second Azure host setups.
Expected: Should not setup

This is an issue with how machine manages credentials, https://github.com/docker/machine/issues/3782

This is also causing my Azure host setup to fail as well.  When I entered a different valid client ID & Secret for same subscriptionID, I get an error when it tries to create saying invalid Client.

Version - master 11/29
Verified fixed


[Style] Enhance the Why CSEdge Internship section of the webiste

What's the style idea?
We need to improve the Why CSEdge Internship section of the website which will offer better UI to improve UX.

Checklist

[X] I have checked the existing issues.
[X] I follow Contributing Guidelines of this project.
[X] I am a GSSoC'24 contributor.

Code of Conduct

[X] I agree to follow this project's "Code of Conduct".

Send me your PR after enhancements @shnwz-solves with screenshots

Send me your PR after enhancements @shnwz-solves with screenshots

Okay @CSEdgeOff , I will send pr after enhancement, working on it.

Hello @CSEdgeOff
I would like to work on the issue. Please assign this task ti me under GSSOC'24.

Hello sir @CSEdgeOff I would like to work on this issue. Please assign me this task.


WIP - V1 timeouts w custom globals tests

This is based on the v1-max-server-timeouts branch in previous PR https://github.com/SVT/orm/pull/39 but added reworked rules testing to accommodate testing with different globals.
Final PR will include previously discussed comments from PR https://github.com/SVT/orm/pull/39 but this might supersede that depending on new comments on these changes to tests.

Good work! Just some minor things.
Thanks!

I'm sorry to come with more naming suggestions, but I believe it would be good to add the suffix _ms or _seconds to variables holding time values, especially since we use different units throughout the configuration. It's also probably a good idea to use the same unit everywhere as far as possible. So I suggest:
globals
timeout_server_max -> timeout_server_max_ms
timeout_server_default -> timeout_server_default_ms
backend
timeout_server -> timeout_server_ms
tests
time_min -> time_min_ms (and rewrite using ms in test code)
time_max -> time_max_ms (and rewrite using ms in test code)
The default values for timeout_server_default and timeout_server_max are used multiple times in the Python code. I suggest setting both values as global constants in the code.

As a counter-suggestion I would rather use seconds as unit for all these time-related parameters and drop the suffix. @splushii Whats your thoughts on that instead?

Good work! Just some minor things.

Thanks!

I'm sorry to come with more naming suggestions, but I believe it would be good to add the suffix _ms or _seconds to variables holding time values, especially since we use different units throughout the configuration. It's also probably a good idea to use the same unit everywhere as far as possible. So I suggest:
globals
timeout_server_max -> timeout_server_max_ms
timeout_server_default -> timeout_server_default_ms
backend
timeout_server -> timeout_server_ms
tests
time_min -> time_min_ms (and rewrite using ms in test code)
time_max -> time_max_ms (and rewrite using ms in test code)
The default values for timeout_server_default and timeout_server_max are used multiple times in the Python code. I suggest setting both values as global constants in the code.

As a counter-suggestion I would rather use seconds as unit for all these time-related parameters and drop the suffix. @splushii Whats your thoughts on that instead?

Sounds good!

LGTM
Please squash the commits and let me know when you feel ready and I'll merge this


docs: add documentation for all commands

Documentation for SVGO. The goal is to have svg/svgo.dev pull this documentation to display on a website. The documentation is maintained in MDX, which is Markdown with React components.
Some improvements we can consider for future:

We have the benefits of reordering nodes/attributes documented twice. We should centralize that information and refer to it.
Add more documentation in general.

Separately document the CLI, JS API, and browser API.
Clarify how to use externally maintained plugins.
Expand documentation on existing plugins.

Credit
Special thanks to:

vanillajonathan for asking great questions in https://github.com/svg/svgo/issues/1460.
GreLI for answering those questions.
To the contributors who included comments in their plugins.

Related

Documentation displayed in https://github.com/svg/svgo.dev/pull/1
Closes https://github.com/svg/svgo/issues/727
Closes https://github.com/svg/svgo/issues/1460
Closes https://github.com/svg/svgo/pull/1464
Closes https://github.com/svg/svgo/issues/1760

Is this documentation built and published anywhere?

It'll be hosted on https://svgo.dev/ soon.
For now, it's only available on https://svgojs.org/ which will redirect to svgo.dev when it's up.


Incorrect domain TP/FP/NAA count in some posts

In some posts, the domain count is incorrect. For example, here is what I see to every surveymonkey.com post:

Another example:

What are the use cases for Apache Spark vs Hadoop and the domain perfectial.com, which is showing "perfectial.com (0, 0, 0)", but the domain is (7, 5, 2)

https://metasmoke.erwaysoftware.com/post/252287 displays (0, 0, 0) for bytemart.org, should be (1, 0, 0).

At this point, I'm unable to duplicate the issue which was reported in the initial comment. It's possible that it's still occurring, but the linked examples don't show the issue for me.
The issue which @tripleee mentions is different than what's reported in the initial comment here. The issue @tripleee  reports is that when the TP/FP/NAA results for the domain are displayed on a post's page, the counts do not include the currently viewed post. This appears to be intentional, as the database queries very explicitly remove the current post. I'm not sure what the purpose is of doing it that way. I, also, find it confusing that the count for the current post is excluded from the displayed counts and would prefer that not to be the case.
Related: PR #896
That PR will change the behavior such that the counts of the current post are not removed from the displayed values (i.e. it will resolve the issue mentioned above by @tripleee).

I'm going to close this. At this point, I'm no longer able to duplicate the originally reported issue on any of the posts which have been linked here or in other related issues.
The issue which @tripleee reported on 2021-09-13 has been resolved by the merge of #896.


ExecuteSQL issues

Hello, I'm trying to do some SQL requests against a shapefile, but I'm not sure how to do it.
main :: IO ()
main = do
    withGDAL $ runGDAL_ $ do
      ds <- OGR.openReadOnly "ne_10m_admin_0_countries.shp"
      let src = sourceLayer_ $ executeSQL DefaultDialect "SELECT * FROM fondo" Nothing ds
      (fs :: [Feature]) <- runOGR (src $$ CL.consume)

This throws me a compilation error:
    Couldn't match type ‘l0’ with ‘l’
      because type variable ‘l’ would escape its scope
    This (rigid, skolem) type variable is bound by
      a type expected by the context: OGR s l [Feature]
      at app/Main.hs:45:28-53
    Expected type: Source (OGR s l) Feature
      Actual type: OGRSource s l0 Feature
    Relevant bindings include
      src :: OGRSource s l0 Feature (bound at app/Main.hs:44:11)
    In the first argument of ‘($$)’, namely ‘src’
    In the first argument of ‘runOGR’, namely ‘(src $$ CL.consume)’

I'm probably doing something wrong.

Hi.
Strange, this compiles fine on my system with 7.10.3:
{-# LANGUAGE ScopedTypeVariables, OverloadedStrings #-}
import GDAL
import OGR
import qualified Data.Conduit.List as CL

main :: IO ()
main = do
    withGDAL $ runGDAL_ $ do
      ds <- OGR.openReadOnly "ne_10m_admin_0_countries.shp"
      let src = sourceLayer_ $ executeSQL DefaultDialect "SELECT * FROM fondo" Nothing ds
      (fs :: [Feature]) <- runOGR (src $$ CL.consume)
      liftIO (print fs)

What version of GHC are you using?
Also, try inlining src inside runOGR, I suspect type inference is getting confused since there's an l phantom type variable to prevent layer pointers from exiting the runOGR region.

Removing it made it works.

Thank you @albertov.
Do you plan on releasing this lib on Hackage?

Eventually yes but i'd like to write some haddocks first and do some cleanup (like extracting the conduit functionality into another package, i've just created #4 for it)

Alright, for now I'll be using for my project as a Git repo with Stack.
Thanks for you lib btw :)

@albertov I think there is a memory issue somewhere. Calling the above code twice in a row makes the second fail with a segmentation fault. Or should I close something myself?

seems like I can only call withGDAL once. Maybe gdal is not thread safe?

withGDAL should only be called once from the main thread since it it registers and deregisters the driver manager which is a process-wide singleton. It is not thread-safe, calling it from several threads will surely cause a segfault.
runGDAL is however thread-safe and can run GDALactions concurrently in different threads (I use this pattern extensively). However, there are some caveats since GDAL itself is mostly thread-safe but not completely. The bindings try make it hard to express unsafe behaviour using the public API (eg: using an existential phantom type to prevent sharing a dataset among threads/GDAL-actions) but it is not bullet-proof. For example, it wont prevent you from writing to geotiff dataset A from one thread and read from geotiff dataset B from another thread, which is not safe. (I work around this using the API proxy

Thanks for you lib btw :)

You're welcome :) Thanks for the feedback!

One thing I'm wondering tho, is that for now it seems I have to call OGR.openReadOnly on each request. I wonder if there is an overhead for this? I tried to open it in the main thread only once, but because of the phantom types you mentioned I seem to be unable to get it out of runGDAL.
I'm not sure if this is a performance issue, since I don't know how Gdal works internally.

Yes, there's probably a noticeable overhead for opening the datasource on every request. They could be cached in a resource pool which ensures exclusive access to them since they're not safe to share among concurrent threads. However, as you have seen, there's no easy way to store these pointers for subsequent requests since they can't escape the runGDAL region (by design, since out of this region they're already closed and deallocated).
Perhaps some unsafe* functions could be exported to obtain a raw pointer to datasets and un-register them from the cleanup machinery for this use-case.

I will for now close this issue. I will reopen one if I think that not being able to store the OGR.openReadOnly pointer is a performance issue in my use.


Introducing: Volume Brushes

SabreCSG Volumes
Brushes can now be turned into Volumes. For example a trigger, a body of water or an area with a strong wind. It's easy to customize and add new volume types through C# that are automatically detected in your project and integrated into SabreCSG's editor.
A collaboration between myself and @Kerfuffles.

How do I use it?
Select a primitive brush like a "Cube Brush (2 x 2 x2)" and in the mode of "Add" or "Subtract" set the brush to "Volume". You will see a new section in the inspector where you can select and configure the volume type, for example the "TriggerVolume". Hit the rebuild button and it works out of the box! No further changes are necessary, this workflow makes it incredibly simple to create new volumes in any shape or size.
You can change the brush mode back to "Add" or "Subtract", you can clip volumes in half, it all works like you'd expect.
How does it work?
Primitive brushes are convex. Unity's mesh collider with "Is Trigger" requires meshes to be convex. This shared rule makes brushes a perfect candidate to define areas of space. When you rebuild the volume brushes they generate a game object with a mesh collider trigger using the convex brush mesh.
Each volume type comes in two parts, an editor script that contains a custom inspector and code to add required components to the built volume game objects (e.g. "TriggerVolume", inherits from "Volume").
The second part is the component itself that will be active during play (e.g. "TriggerVolumeComponent" or something else from your project) which is an ordinary MonoBehaviour that receives OnTriggerEnter events by Unity because there is a mesh collider trigger.
How was this implemented (@sabresaurus edition)?
I wanted to implement this new feature with as minimal changes to SabreCSG's core as possible.
First I decided to add a new CSGMode as that made the most sense, there are no subtractive volumes, they aren't additive brushes, they can't be NoCSG, collision is always on but they are triggers so there is no physical collision and they are never visible, so adding another state button like NoCSG made little sense. Even NoCSG could technically be a CSGMode as they can't be subtractive.
BrushBase now has a property called Volume (usually null). This means I can expand the concept and have compound brushes be volumes in the future. Volume is a ScriptableObject that people can inherit from to build their own custom volume types.
In my first attempts I created all volume game objects under the MeshGroup as VolumeMeshes but quickly found that they were deleted on every rebuild just like MaterialMesh and CollisionMesh. When I made a VolumeGroup instead to prevent this I found that Auto Rebuild is unable to keep track of them anyway and I would have to iterate through all built volumes to try and see if it already exists, meaning for 400 volumes I would have to iterate through 400 built volumes leading up to 160,000 iterations and a bunch of checks and additional components that were unnecessary during play just to associate them, it was all a big mess and too slow.
Then I realized I could parent the built volume objects to their volume brushes. In Auto-Rebuild I have the brush transforms that need to be rebuilt, it's a quick single .Find() check to find any existing built volumes. I opted to use this approach. I used a very unique name "SabreCSG: Volume Component (67173f4f-868c-4c70-ae40-335550c8354f)" for the game objects so there's never going to be a conflict. Then I decided to hide them from the hierarchy. I added a checkbox in the SabreCSG preferences so you can manually show them if needed for development purposes. When the brush is no longer a volume I simply delete the volume object and set the Volume property back to null on rebuild.
Once play mode starts I put these volume objects under the MeshGroup, make them visible and editable for the user and they inherit the parent brush name + " (Volume)" so it's quite easy to find them again.
It's incredibly clean, the hierarchy is identical to all previous SabreCSG versions and it's extremely simple to make volumes, this workflow feels amazing and I clean up after myself, there's no invisible garbage. ;)
Important
We are working on some finishing touches. Do not use this in production projects or levels yet as we may introduce some breaking changes to the volume classes! Feedback is very welcome!
Fixes #116.

Hi, fantastic PR. I've given it a try and I have some thoughts:

Parenting in the brush is inconsistent with MeshGroups, that seems like a fixable problem. It's somewhat confusing to have hidden objects in this way.
It's a little unclear what volumes are, maybe there should be more of a description on the actual component.
Force directions should be applied local to the brush, i.e. if you rotate the brush 90 degrees the force direction should be rotated
If a setting isn't active it should be hidden, e.g. force, etc. Like you do with filter tag
"Even NoCSG could technically be a CSGMode as they can't be subtractive" - beyond the scope of this PR, but that seems like a great idea!

Most of your notes have been implemented now (as well as what we discussed). I believe inline documentation is beyond the scope of this PR because we should develop a generic system that doesn't get in the way. But I will add a wiki page on Volumes to explain what it is all about, how it works and how to build your own volume types.


youtube-dl 'http://www.c-span.org/video/standalone/?323622-1/lawrence-lessig-campaign-finance' fails

I'm trying to use youtube-dl, version 2015.09.03 under OS X 10.8.5 to download a video from CSpan, but instead of downloading the video, youtube-dl produces an error.  CSpan is listed as one of the sites supported by youtube-dl (http://rg3.github.io/youtube-dl contains a link labeled "more sites" which points to http://rg3.github.io/youtube-dl/supportedsites.html.  That page lists CSpan.)  Here are the details:
I just downloaded and installed youtube-dl by doing the following:
I navigated to http://rg3.github.io/youtube-dl/download.html to download youtube-dl.  That page says:
To install it right away for all UNIX users (Linux, OS X, etc.), type:

	sudo curl https://yt-dl.org/downloads/2015.09.03/youtube-dl -o /usr/local/bin/youtube-dl
	sudo chmod a+rx /usr/local/bin/youtube-dl

I ran those commands.  I then verified that the latest version of youtube-dl is installed:
bash-3.2$ youtube-dl -U
youtube-dl is up-to-date (2015.09.03)

I then ran youtube-dl as follows:
youtube-dl 'http://www.c-span.org/video/standalone/?323622-1/lawrence-lessig-campaign-finance'

It complained:
[generic] lawrence-lessig-campaign-finance: Requesting header
WARNING: Falling back on generic information extractor.
[generic] lawrence-lessig-campaign-finance: Downloading webpage
[generic] lawrence-lessig-campaign-finance: Extracting information
ERROR: Unsupported URL: http://www.c-span.org/video/standalone/?323622-1/lawrence-lessig-campaign-finance

I reran youtube-dl with the --verbose flag. Below are the commands I ran and the output from those commands.
bash-3.2$ youtube-dl --verbose 'http://www.c-span.org/video/standalone/?323622-1/lawrence-lessig-campaign-finance'
[debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'--verbose', u'http://www.c-span.org/video/standalone/?323622-1/lawrence-lessig-campaign-finance']
[debug] Encodings: locale US-ASCII, fs utf-8, out US-ASCII, pref US-ASCII
[debug] youtube-dl version 2015.09.03
[debug] Python version 2.7.2 - Darwin-12.5.0-x86_64-i386-64bit
[debug] exe versions: none
[debug] Proxy map: {}
[generic] lawrence-lessig-campaign-finance: Requesting header
WARNING: Falling back on generic information extractor.
[generic] lawrence-lessig-campaign-finance: Downloading webpage
[generic] lawrence-lessig-campaign-finance: Extracting information
ERROR: Unsupported URL: http://www.c-span.org/video/standalone/?323622-1/lawrence-lessig-campaign-finance
Traceback (most recent call last):
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/generic.py", line 1222, in _real_extract
    doc = parse_xml(webpage)
  File "/usr/local/bin/youtube-dl/youtube_dl/utils.py", line 1599, in parse_xml
    tree = xml.etree.ElementTree.XML(s.encode('utf-8'), **kwargs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 1282, in XML
    parser.feed(text)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 1624, in feed
    self._raiseerror(v)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 1488, in _raiseerror
    raise err
ParseError: not well-formed (invalid token): line 19, column 37
Traceback (most recent call last):
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 655, in extract_info
    ie_result = ie.extract(url)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 287, in extract
    return self._real_extract(url)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/generic.py", line 1820, in _real_extract
    raise UnsupportedError(url)
UnsupportedError: Unsupported URL: http://www.c-span.org/video/standalone/?323622-1/lawrence-lessig-campaign-finance

I just discovered how to get it working.  I'd given youtube-dl an argument that points to the video rather than the webpage that contains the video plus all of C-Span's additional content (header, footer, description, etc.)  Apparently youtube-dl searches for a particular node in the HTML tree to find the link to the video.  Since the page at the URL I initially gave it (http://www.c-span.org/video/standalone/?323622-1/lawrence-lessig-campaign-finance) doesn't contain that HTML, it couldn't find the link to the video.  When I instead ran youtube-dl 'http://www.c-span.org/video/?323622-1/lawrence-lessig-campaign-finance', it downloaded without a problem.  In case the difference in the URLs is not obvious, the former contains the string "standalone".  The latter does not.


Timer synchronization

Observed by hotdogninja#5245 and monke#6890 on Discord

one player was using Chrome on iPhone
other player was using Chrome on desktop

When spectating I once got NaN for the timers everywhere


[dbus] add APIs to activate/deactivate ePSKc mode

The dbus client test in previous commit has been removed because the CI failed. Have we found out the root cause? I think we'd better find out the cause.

Yes, we have issue track and another PR including the client test to reproduce this failure.

@mia1yang , can you help resolve conflicts?


refactor(ast): replace serde rename "lowercase" with "camelCase"

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#4376  👈
#4375
main

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

Join @overlookmotel and the rest of your teammates on  Graphite


NIFI-12126: Downgrade snowflake-jdbc to 3.13.33

snowflake-ingest-sdk:2.0.3 is not compatible with snowflake-jdbc:3.14.x
Summary
NIFI-12126
Tracking
Please complete the following tracking steps prior to pull request creation.
Issue Tracking

[x] Apache NiFi Jira issue created

Pull Request Tracking

[x] Pull Request title starts with Apache NiFi Jira issue number, such as NIFI-00000
[x] Pull Request commit message starts with Apache NiFi Jira issue number, as such NIFI-00000

Pull Request Formatting

[x] Pull Request based on current revision of the main branch
[x] Pull Request refers to a feature branch with one commit containing changes

Verification
Please indicate the verification steps performed prior to pull request creation.
Build

[x] Build completed using mvn clean install -P contrib-check

[x] JDK 21

Licensing

[ ] New dependencies are compatible with the Apache License 2.0 according to the License Policy
[ ] New dependencies are documented in applicable LICENSE and NOTICE files

Documentation

[ ] Documentation formatting appears as expected in rendered files

Thanks for catching this @turcsanyip, I'll be more careful next time! Merging


This library wants to use zod

zod: https://github.com/colinhacks/zod
I've avoided it because it's an extra dependency. But it makes hard tasks of validation much easier. For example, here's how you validate a signed event:
import { z } from 'zod';

import { verifySignature } from './event.ts';

const hex256Schema = z.string().regex(/^[0-9a-f]{64}$/);

const signedEventSchema = z.object({
  id: hex256Schema,
  kind: z.number(),
  tags: z.array(z.array(z.string())),
  content: z.string(),
  created_at: z.number(),
  pubkey: hex256Schema,
  sig: z.string(),
}).refine(verifySignature);

type SignedEvent = z.infer<typeof signedEventSchema>;

Then you can:
const event = signedEventSchema.parse(data) // will either throw, or return a SignedEvent

I'm afraid it might be too big of a change, so I'm considering making a separate nostr-schema library. Here's an example of using Zod for a much harder thing in Nostr, validating a NIP-98 auth event: https://gitlab.com/soapbox-pub/ditto/-/blob/develop/src/middleware/auth98.ts#L24

+1 for Zod!

@fiatjaf yes: https://docs.npmjs.com/cli/v7/configuring-npm/package-json#peerdependenciesmeta

Let's not use this for now.


fix kbd tags not being readable in dark-mode

fixes some aspects of #7

black part of the footer does now reach the bottom. The lighter gray bar at the bottom is removed.
<kbd> tags are now more readable in dark mode

awesome! I did not even know we had a dark mode :-)

awesome! I did not even know we had a dark mode :-)


Add local signing support for VSIX files

This PR adds local signing support for VSIX files by adding a new command "certificate-manager" that allows Dotnet/Sign to use certificates stored in the Windows Certificate Manager.
More specifically, this PR does the following:

Adds a new "certificate-manager" command that takes in a SHA1 Thumbprint that is used to extract a certificate from the Windows Certificate Manager
Adds a certificate manager signing provider
Incorporated OpenOPCSignTool VSIX signing into Sign.Core
Created a new ICertificateManager interface to keep IKeyVaultService and ICertificateManagerService in sync for easier migration to plugins
Adds the ability to use either Azure Key Vault or Windows Certificate Manager as the certificate source for VSIX files
Adds new tests for CertificateManagerService and CertificateManagerCommand

@javierdlg, also I see that vscjones/OpenOpcSignTool has a number of tests, some of which cover VSIX signing scenarios.
By porting source code over but not the tests, it seems like we've lost test coverage.
I think it's critical, as part of this PR, to not lose test coverage.  You may need to port or create new test cases to make up the delta.  Please confirm, either by adding commits to this PR or by posting affirmation, that we are maintaining VSIX test coverage.

@javierdlg There's some tests that are failing -- can you please take a look and resolve it? Do the new tests address @dtivel's concerns about losing coverage?

@javierdlg, please append to /THIRD-PARTY-NOTICES.txt:

License notice for OpenOpcSignTool
-------------------------------

MIT License

Copyright (c) 2017 Kevin Jones

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

 IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Available at https://github.com/vcsjones/OpenOpcSignTool/blob/main/LICENSE

@javierdlg There's some tests that are failing -- can you please take a look and resolve it? Do the new tests address @dtivel's concerns about losing coverage?

Thanks, yes these come from the migrated tool and have been fixed.


Docs improvement: write the domain of parameters

Something that would be useful to add in the documentation as well as the docstrings, on top of "typical range" as we discussed previously, would be the domain. Which parameters are defined [-Inf, Inf], which must be > 0, etc. This would be helpful for parametrization and would save some thinking and testing (especially when doing specifying lots of different types of models).

Putting citations for studies looking at priors in the thread. Would the idea be to have a section in each model that gives those ranges/domains or just add to the explanation of each parameter?
Matzke, D., & Wagenmakers, E. J. (2009). Psychological interpretation of the ex-Gaussian and shifted Wald parameters: A diffusion model analysis. Psychonomic Bulletin & Review, 16, 798-817.
Tran, N. H., Van Maanen, L., Heathcote, A., & Matzke, D. (2021). Systematic parameter reviews in cognitive modeling: Towards a robust and cumulative characterization of psychological processes in the diffusion decision model. Frontiers in Psychology, 11, 608287.

Would the idea be to have a section in each model that gives those ranges/domains or just add to the explanation of each parameter?

🤷  I think adding the info under each parameter section is fine (https://itsdfish.github.io/SequentialSamplingModels.jl/dev/wald/#Non-Decision-Time)

It might be useful to list the domain in the doc strings as a convienent reference, and inlclude details about priors in  the online documentation.


NBSS

KIDORCA

@K2ZX4364 I have to close this request without merging, because you requested to add a non-existent domain to this repository: Host nbss.nbed.nb.ca.domains.lib.file not found: 3(NXDOMAIN) Please ensure that you are familiar with this repository rules located at the bottom of this page and submit a new request with the correct information. Thank you for your understanding!


clean up packages and remove viper

Description
implementing the changes from #137 that @imiller31 made accounting for drift

move several files into the folders they logically belong in
remove unused extra web files
remove remnants of viper usage in favor of full migration to yaml library

Fixes # (issue)
Feature # (details)
Type of change

[x] Refactor

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration. Is it a  breaking change which will impact consuming tool(s).

[x] Existing integration tests
[x] Existing unit tests

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[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] Any dependent changes have been merged and published in downstream modules

this change should be purely internal to organize the packages, and does not impact the usage/outputs at all, so no tests should have to be updated and azcli should retain all functionality

LGTM


Add light dark mode toggle button

Description
no issues in the website. Adding light dark mode toggle button for enhancing the website
Screenshots

Do you want to work on this issue?
Yes I would work on this issue
How are you planning to resolve on this issue?
by adding required code for including dark and light mode toggle button
Are you raising this issue under hacktoberfest? (Remove this section if you are not a hacktoberfest participant)
Yes, I'm raising this issue under hacktoberfest.

@priyadarshni-jha Light / Dark mode toggle is already present on the website but it's not working correctly. So do check that out and remove that code before adding the new one.

@priyadarshni-jha Also, kindly make sure that the toggle works for the whole website and not just that particular page.

Hi! Can you assign it to me?

@priyadarshni-jha Any updates? Kindly reply by tomorrow.

Hi! Can you assign it to me?

@madmaxWMFU Let me check the status with @priyadarshni-jha, If she is not working on this one then I'll assign it to you.


Add table APIs for the new config format

Codecov Report

Merging #2937 into master will increase coverage by 0.02%.
The diff coverage is 33%.

@@            Coverage Diff             @@
##           master    #2937      +/-   ##
==========================================
+ Coverage   69.24%   69.26%   +0.02%
==========================================
  Files         914      915       +1
  Lines       43394    43488      +94
  Branches     5919     5930      +11
==========================================
+ Hits        30047    30123      +76
- Misses      11334    11344      +10
- Partials     2013     2021       +8

Impacted Files
Coverage Δ

...ntroller/helix/core/PinotHelixResourceManager.java
60.59% <ø> (ø)
:arrow_up:

.../controller/helix/ControllerRequestURLBuilder.java
71.92% <100%> (+1.02%)
:arrow_up:

...api/resources/PinotTableConfigRestletResource.java
24.71% <24.71%> (ø)

.../com/linkedin/pinot/common/config/TableConfig.java
80% <83.33%> (+0.24%)
:arrow_up:

...lix/EmptyBrokerOnlineOfflineStateModelFactory.java
86.66% <0%> (-13.34%)
:arrow_down:

...ore/query/scheduler/resources/ResourceManager.java
87.09% <0%> (-9.68%)
:arrow_down:

...pinot/core/operator/docidsets/OrBlockDocIdSet.java
84.9% <0%> (-9.44%)
:arrow_down:

.../impl/dictionary/FloatOnHeapMutableDictionary.java
80% <0%> (-6.67%)
:arrow_down:

...roller/helix/core/PinotTableIdealStateBuilder.java
72.56% <0%> (-6.2%)
:arrow_down:

...not/core/query/pruner/DataSchemaSegmentPruner.java
57.14% <0%> (-4.77%)
:arrow_down:

... and 28 more

Continue to review full report at Codecov.

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

Is there anything that's blocking this review?

It looks like not all comments were addressed. The code also needs to be rebased.


IPv6 PXE support

UEFI firmwares know how to netboot over IPv6. The process is similar to IPv4, but different. Some braindumped notes at https://github.com/google/netboot/blob/master/pixiecore/README.ipv6.md .

Anyone working on this yet? I can offer some help with coding...

I started on adding dhcpv6 support to netboot. It's very early stages, but I can do an ipv6-only httpboot + ipxe. You can take a look at the progress at https://github.com/witlessbird/netboot/tree/dhcpv6.

Just found this repo again and wanted to mention that I did some DHCPv6 experiments once.
https://github.com/mdlayher/dhcp6
Would love to help make this happen. PXE is awesome.

I opened PR that adds initial support for IPv6: https://github.com/google/netboot/pull/49

I saw a readme in pixiecore related to pxe boot over IPV6, which lead me to this issue! haha
This is something I am also curious about and will be investigating as well.
I stumbled on pixiecore through my investigation of NixOS for my server host os. I am looking to create a deployment setup similar to what one may see with Canonical's MaaS, Equinix's Tinkerbell or Sidero metal, though IPV6 is a significant part of my plans.
Wondering if this is still something being investigated? Or if you have moved forward with any plans already?
The last comment appears to be from 2017. Have you found an alternate solution that you use?

The last comment appears to be from 2017.

The PR was merged then; I haven't worked with it since, as the project i was doing this work (the Foreman) rejected my approach to bare-metal provisioning over IPv6. There's a video somewhere on youtube with my demo that uses netboot + IPv6.

This is good information, thank you. I will search for the video, it may be a good learning exercise to try and code something simple to understand the process. The graph image is really helpful for the boot process, just need to understand nuance for v6 now.

The last comment appears to be from 2017.

The PR was merged then; I haven't worked with it since, as the project i was doing this work (the Foreman) rejected my approach to bare-metal provisioning over IPv6. There's a video somewhere on youtube with my demo that uses netboot + IPv6.

I will search for the video

Here you are: https://www.youtube.com/watch?v=6KJne_Hyv5k

Also note from the repo's main readme:

This project is no longer actively developed. I'm glad if you find it useful, but don't expect any significant changes.

Also note from the repo's main readme:

This project is no longer actively developed. I'm glad if you find it useful, but don't expect any significant changes.

No worries! Thank you for leaving this as a learning tool. It is wonderful. I am looking forward to trying my hand at writing something with Rust.

Have fun! With any luck, the state of UEFI bugs has improved since I wrote pixiecore, and some of the hacks may not be necessary any more. I can always dream...


Implement skeleton codes for Notification APIs

PTAL @JayChl, @daehyunjimmy for the notification design.
@sphilee, please fill the description. :)


Example README filepath update

For Usage Example 1 you create drd2_decorator/excape.drd2.hr.smi with slice_db.py.  In the next line when trying to create randomized smiles you accidently call it drd2_decorator/drd2.hr.smi

Thanks for the fix! Merged. :smile:


Problems embedding an iframe in an infoWindow when using attribute substitution

I'm seeing a problem when trying to embed an iframe within an infoWindow, attached to a dynamic layer specified via the Local Layer Widget.
I've put this as the Custom source for the popup:
iframe src="http://localhost/reports/pages/{GISID}"
a href="http://localhost/reports/pages/{GISID}"
where {GISID} is a valid field within the dynamic layer. The attribute substitution for the anchor tag works correctly:
`a href="http://localhost/reports/pages/1090390" target="_blank">Open report in new tab
... but the substitution for the iframe src includes a span tag:
iframe src="http://localhost/reports/pages/1090390"></iframe
Is this something you have control over in the Local Layer Widget, or is it a problem introduced by the WAB?
thanks

That's interesting, Stephen.  What method are you using to dynamically stub that GISID value into your HTML?

Closed due to no evidence that this issue is related to the LocalLayer widget


Hello, I don’t understand how hotpotqa’s reward is scored. It seems that when searching the wiki, the reward is not set to 1. What I always get is reward=0. Can you explain how to reward qa? Thank you.

Hello, I don’t understand how hotpotqa’s reward is scored. It seems that when searching the wiki, the reward is not set to 1. What I always get is reward=0. Can you explain how to reward qa? Thank you.

Hello, sorry to bother you. I have the same question as you. I would like to ask you, do you understand how to assign the reward?


Add startup script changes

Add startup script changes for 2.4.3
Issue #, if available:
Description of changes:
Add startup script support for 2.4.3 branch.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@vishalvijay18 @yumike2006 - are you looking into merging this to v2.5.1 branch as well?

Here is the pull request: https://github.com/aws/aws-mwaa-local-runner/pull/245


UILabel Kerning

#import "UILabel+TextKerning.h"

@implementation UILabel (TextKerning)

-(void) setText:(NSString *)text withKerning:(CGFloat)kerning
{
    if ([self respondsToSelector:@selector(setAttributedText:)])
    {
        NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:text];
        [attributedString addAttribute:NSKernAttributeName
                                 value:[NSNumber numberWithFloat:kerning]
                                 range:NSMakeRange(0, [text length])];
        [self setAttributedText:attributedString];
    }
    else{
        [self setText:text];
    }
}

-(void) setKerning:(CGFloat)kerning
{
    [self setText:self.text withKerning:kerning];
}

@end

Can you elaborate on this issue? It is not evident what you are trying to convey from your code. Closing for now, feel free to reopen when providing additional information.

After looking at other issues opened by @imton, it appears that these are intended at suggestions of adding functionality. Confusing as one would expect this sort of thing to be submitted via pull request. Reopening for the time being pending further investigation.

@Stunner This does not look like an odd form of a pull request to me.
Rather like a collection of code snippets on how to make random stuff work on UIViews without any relation to NUI.
A request that NUI should offer a Kerning on labels would be valid. Help with its implementation would be extremely appreciated. But I'm not going to be guessing what someone is trying to tell me with a code snippet only issue.
Closing for the same reason as #283.
Feel free to reopen once you have provided more details on your specific issue and how it relates to nui.


add sign up UI

Merge this for deployment

placeholder text color darker
overflow of sign-up form when have error message


IPAD jerking animation

Im getting jerky animations on my IPAD, can you tell me which version i need to use to avoid it. Send me the link. Pls.the problem is displaying elements first, then the animate starts.

Problem with the elements displaying and then animating is probably caused by 'animation-fill-mode' not being set to 'both'. What version of animate.css are you using and more important, what browser are you using?
It might very well be that your browser does not support hardware acceleration like @fricke mentioned. Has the thread he linked to fixed the problem for you?

Thanks for your reply, The problem has been resolved.
On Tue, Mar 17, 2015 at 5:46 PM, Maarten<EMAIL_ADDRESS>wrote:

Problem with the elements displaying and then animating is probably caused
by 'animation-fill-mode' not being set to 'both'. What version of
animate.css are you using and more important, what browser are you using?
It might very well be that your browser does not support hardware
acceleration like @fricke https://github.com/fricke mentioned. Has the
thread he linked to fixed the problem for you?
—
Reply to this email directly or view it on GitHub
https://github.com/matthieua/WOW/issues/141#issuecomment-82390513.

--
--
Mohammad MasoodWeb Designer <#SafeHtmlFilter_> <#SafeHtmlFilter_>
<#SafeHtmlFilter_> <#SafeHtmlFilter_>M +966 532 145 317|T +966 11279
2043 Connect
with usF +966 11288 6447|P.O.Box 250704 Riyadh 11391 |KSA
https://www.facebook.com/Brainstormin.communications
https://twitter.com/Brainstormin_ http://vimeo.com/user8796129
http://www.youtube.com/channel/UCw67QigWQB3895ZMqbP1etQ/feed
https://plus.google.com/118206144011933306053
https://www.behance.net/braindingsa http://thebrainstorming.com/
http://www.brainding.com/ http://www.brainstormingadvertising.com/
http://brainimation.com/