Use NS_ENUM for better Swift interoperability

Objective-C enums that are defined with the NS_ENUM macro are automatically imported
into Swift as Swift enumerations. This allows for easier usage of the enums in Swift.
In addition to wrapping all enum declarations into NS_ENUM, this commit also makes
sure that the correct factory method is used when converting between enum constants
and NSNumbers.

And, Thank you for your contribution. :)


aws_common: 2.2.0-1 in 'kinetic/distribution.yaml' [bloom]

Increasing version of package(s) in repository aws_common to 2.2.0-1:

upstream repository: https://github.com/aws-robotics/utils-common.git
release repository: https://github.com/aws-gbp/aws_common-release.git
distro file: kinetic/distribution.yaml
bloom version: 0.9.3
previous version for package: 2.1.0-1

aws_common
* Update package.xml
  https://github.com/aws-robotics/utils-common/pull/52 adds a new feature for expanding file paths
* Fix linting issues found by clang-tidy 6.0 (#53 <https://github.com/aws-robotics/utils-common/issues/53>)
  * fix linter errors
  * fix more linter errors
  * add linter exceptions
  * address PR comments
* Add wordexp_ros wrapper for wordexp, allowing ROS-aware path expansion
* Add buildtool dependency on ament_cmake_gtest/gmock
* Update DefineTestMacros.cmake
* Add NoRetryStrategy (#38 <https://github.com/aws-robotics/utils-common/issues/38>)
  * ROS-2222: Add Configuration For Retry Strategy
  cr https://code.amazon.com/reviews/CR-10006070
  Signed-off-by: Miaofei<EMAIL_ADDRESS>  * Don't allow max_retries to override strategy
  cr https://code.amazon.com/reviews/CR-10283519
  Signed-off-by: Miaofei<EMAIL_ADDRESS>  * cleanup NoRetryStrategy
  Signed-off-by: Miaofei<EMAIL_ADDRESS>  * increment minor version
  Signed-off-by: Miaofei<EMAIL_ADDRESS>* Fix ament macro call in DefineTestMacros.cmake (#35 <https://github.com/aws-robotics/utils-common/issues/35>)
  * Fix ament macro call in DefineTestMacros.cmake
  * Disallow Travis build failures for dashing
* Add macro for ros1/2 finding gtest and gmock (#30 <https://github.com/aws-robotics/utils-common/issues/30>)
  * Add macro for ros1/2 finding gtest and gmock
  The macro find_common_test_packages will use ament or catkin to link to gtest and gmock libraries.
  **Note:** You must add dependencies on gtest and gmock in the package.xml still
  * remove linkage against redundant library
  Signed-off-by: Miaofei<EMAIL_ADDRESS>  * update travis.yml to be compatible with specifying multiple package names
  Signed-off-by: Miaofei<EMAIL_ADDRESS>  * update travis.yml test matrix
  Signed-off-by: Miaofei<EMAIL_ADDRESS>  * make catkin a buildtool_depend
  Signed-off-by: Miaofei<EMAIL_ADDRESS>* Contributors: AAlon, Avishay Alon, M. M, Miaofei Mei, Ross Desmond, Ryan Newell

Travis passed but failed to report back.


Allow passing in directories

Allow passing in directories, not just files to mdformat. Look for .md files recursively in directories.

Done in 5fd03eec303ba28143e4f9815773043a440147e4


local subdomain instead of suffix

I'd like to use local as the sub domain rather that .local as the domain suffix. Is this possible? So local.myproject.com not www.myproject.local. Thanks!

TLD_SUFFIX
This is unfortunately not how DNS works. You can only have it as a prefix (when relying on DNS).
Alternatively you can use com as your TLD and name your project: local.myproject. That would result in the name you want. However, then you are stuck to com for all projects.
Vhost overwrite
You could also alter the vhost configuration itself. This allows you to use any domain for any project: http://devilbox.readthedocs.io/en/latest/tutorials/adding-subdomains.html#adding-www-sub-domain

Thanks for the speedy reply. @cytopia. I'll start reconfiguring all my projects that are local. then! Cheers

Welcome, I will close this issue then. Feel free to reopen if you hit problems on that approach.

@stefanlesik: With the latest DNS features cytopia has added, you could do this now.
http://devilbox.readthedocs.io/en/latest/configuration-files/env-file.html#env-extra-hosts
EXTRA_HOSTS='loc.myproject.com=<IP_ADDRESS>
or
EXTRA_HOSTS='loc.myproject.com=<IP_ADDRESS>,loc.mysecondproject.com=<IP_ADDRESS>


wxPython requirement issue

ℹ Computer information

Platform OS (e.g Windows, Mac, Linux etc): Fedora 34 & Ubuntu 20.04 (both on amd64)
Python Version: 3.7
Brain Interface Used (e.g Muse, OpenBCI, Notion etc): None

📝 Provide detailed reproduction steps (if any)

Initiate a fresh OS image (either Fedora 34 or Ubuntu 20.04) on a virtual machine or on bare metal.
Install Miniconda4 (see this link).
Attempt to install the environment:

conda create -n "eeg-notebooks" python=3.7 git pip

conda activate "eeg-notebooks"

git clone https://github.com/NeuroTechX/eeg-notebooks

cd eeg-notebooks

pip install -e .

(reproduced from the eeg-notebooks installation documentation)

✔ Expected result
The installation process should fetch and install all required packages for eeg-notebooks, including wxpython which is a requirement for PsychoPy 4.
❌ Actual result
The installation process installs all packages except for wxpython, producing the stderr & stdout:
Collecting wxpython
  Using cached wxPython-4.1.1.tar.gz (66.0 MB)
Requirement already satisfied: pillow in /home/taha/miniconda3/envs/eeg-notebooks/lib/python3.7/site-packages (from wxpython) (8.4.0)
Requirement already satisfied: six in /home/taha/miniconda3/envs/eeg-notebooks/lib/python3.7/site-packages (from wxpython) (1.16.0)
Requirement already satisfied: numpy in /home/taha/miniconda3/envs/eeg-notebooks/lib/python3.7/site-packages (from wxpython) (1.21.3)
Building wheels for collected packages: wxpython
  Building wheel for wxpython (setup.py): started
  Building wheel for wxpython (setup.py): finished with status 'error'
  ERROR: Command errored out with exit status 1:
   command: /home/taha/miniconda3/envs/eeg-notebooks/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-c7f0sh1z/wxpython_4ca534779ef94539840b93bd127e59a3/setup.py'"'"'; __file__='"'"'/tmp/pip-install-c7f0sh1z/wxpython_4ca534779ef94539840b93bd127e59a3/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-x8eelqvm
       cwd: /tmp/pip-install-c7f0sh1z/wxpython_4ca534779ef94539840b93bd127e59a3/
  Complete output (142 lines):
  /home/taha/miniconda3/envs/eeg-notebooks/lib/python3.7/site-packages/setuptools/dist.py:720: UserWarning: Usage of dash-separated 'license-file' will not be supported in future versions. Please use the underscore name 'license_file' instead
    % (opt, underscore_opt)
  /home/taha/miniconda3/envs/eeg-notebooks/lib/python3.7/site-packages/setuptools/dist.py:294: DistDeprecationWarning: use_2to3 is ignored.
    warnings.warn(f"{attr} is ignored.", DistDeprecationWarning)
  running bdist_wheel
  running build
  WARNING: Building this way assumes that all generated files have been
  generated already.  If that is not the case then use build.py directly
  to generate the source and perform the build stage.  You can use
  --skip-build with the bdist_* or install commands to avoid this
  message and the wxWidgets and Phoenix build steps in the future.

  "/home/taha/miniconda3/envs/eeg-notebooks/bin/python" -u build.py build
  Will build using: "/home/taha/miniconda3/envs/eeg-notebooks/bin/python"
  3.7.11 (default, Jul 27 2021, 14:32:16)
  [GCC 7.5.0]
  Python's architecture is 64bit
  cfg.VERSION: 4.1.1

  Running command: build
  Running command: build_wx
  wxWidgets build options: ['--wxpython', '--unicode', '--gtk3']
  Configure options: ['--enable-unicode', '--with-gtk=3', '--enable-sound', '--enable-graphics_ctx', '--enable-display', '--enable-geometry', '--enable-debug_flag', '--enable-optimise', '--disable-debugreport', '--enable-uiactionsim', '--enable-autoidman', '--with-sdl']
  /tmp/pip-install-c7f0sh1z/wxpython_4ca534779ef94539840b93bd127e59a3/ext/wxWidgets/configure --enable-unicode --with-gtk=3 --enable-sound --enable-graphics_ctx --enable-display --enable-geometry --enable-debug_flag --enable-optimise --disable-debugreport --enable-uiactionsim --enable-autoidman --with-sdl
  checking build system type... x86_64-pc-linux-gnu
  checking host system type... x86_64-pc-linux-gnu
  checking for toolkit... gtk
  checking for gcc... gcc
  checking whether the C compiler works... yes
  checking for C compiler default output file name... a.out
  checking for suffix of executables...
  checking whether we are cross compiling... no
  checking for suffix of object files... o
  checking whether we are using the GNU C compiler... yes
  checking whether gcc accepts -g... yes
  checking for gcc option to accept ISO C89... none needed
  checking whether we are using the Intel C compiler... no
  checking how to run the C preprocessor... gcc -E
  checking for grep that handles long lines and -e... /usr/bin/grep
  checking for egrep... /usr/bin/grep -E
  checking whether gcc needs -traditional... no
  checking for g++... g++
  checking whether we are using the GNU C++ compiler... yes
  checking whether g++ accepts -g... yes
  checking whether we are using the Intel C++ compiler... no
  checking whether we are using the Sun C++ compiler... no
  checking for ar... ar
  checking for ANSI C header files... yes
  checking for sys/types.h... yes
  checking for sys/stat.h... yes
  checking for stdlib.h... yes
  checking for string.h... yes
  checking for memory.h... yes
  checking for strings.h... yes
  checking for inttypes.h... yes
  checking for stdint.h... yes
  checking for unistd.h... yes
  checking for langinfo.h... yes
  checking for wchar.h... yes
  checking for sys/select.h... yes
  checking for cxxabi.h... yes
  checking for an ANSI C-conforming const... yes
  checking for inline... inline
  checking size of short... 2
  checking size of void *... 8
  checking size of int... 4
  checking size of long... 8
  checking size of size_t... 8
  checking size of long long... 8
  checking size of wchar_t... 4
  checking for va_copy... yes
  checking for _FILE_OFFSET_BITS value needed for large files... 64
  checking if large file support is available... yes
  checking for _LARGEFILE_SOURCE value needed for large files... no
  checking whether byte ordering is bigendian... no
  checking for std::wstring in <string>... yes
  checking for std::istream... yes
  checking for std::ostream... yes
  checking for type_traits... yes
  checking for __sync_fetch_and_add and __sync_sub_and_fetch builtins... yes
  checking for libraries directories... /usr/lib64
  checking for cos... no
  checking for floor... no
  checking if floating point functions link without -lm... no
  checking for sin... yes
  checking for ceil... yes
  checking if floating point functions link with -lm... yes
  checking for strtoull... yes
  checking for pkg-config... /usr/bin/pkg-config
  checking pkg-config is at least version 0.9.0... yes
  configure: WARNING: Defaulting to the builtin regex library for Unicode build.
  checking for zlib.h >= 1.1.4... yes
  checking for zlib.h... (cached) yes
  checking for deflate in -lz... yes
  checking for png.h > 0.90... no
  checking for png.h... (cached) no
  configure: WARNING: system png library not found or too old, will use built-in instead
  checking whether png.c file exists... yes
  checking for jpeglib.h... no
  configure: WARNING: system jpeg library not found, will use built-in instead
  checking whether jpeglib.h file exists... yes
  checking lzma.h usability... yes
  checking lzma.h presence... yes
  checking for lzma.h... yes
  checking for lzma_code in -llzma... yes
  checking for jbg_dec_init in -ljbig... no
  checking for LIBTIFF... not found via pkg-config
  checking for tiffio.h... no
  configure: WARNING: system tiff library not found, will use built-in instead
  checking whether tiff.h file exists... yes
  checking for expat.h... no
  configure: WARNING: system expat library not found, will use built-in instead
  checking whether expat.h file exists... yes
  checking for gcc option to accept ISO C99... none needed
  checking for GTK+ version...
  checking for pkg-config... (cached) /usr/bin/pkg-config
  checking pkg-config is at least version 0.16... yes
  checking for GTK+ - version >= 3.0.0... no
  *** Could not run GTK+ test program, checking why...
  *** The test program failed to compile or link. See the file config.log for the
  *** exact error that occurred. This usually means GTK+ is incorrectly installed.
  configure: error:
  The development files for GTK+ were not found. For GTK+ 2, please
  ensure that pkg-config is in the path and that gtk+-2.0.pc is
  installed. For GTK+ 1.2 please check that gtk-config is in the path,
  and that the version is 1.2.3 or above. Also check that the
  libraries returned by 'pkg-config gtk+-2.0 --libs' or 'gtk-config
  --libs' are in the LD_LIBRARY_PATH or equivalent.

  Error running configure
  ERROR: failed building wxWidgets
  Traceback (most recent call last):
    File "build.py", line 1510, in cmd_build_wx
      wxbuild.main(wxDir(), build_options)
    File "/tmp/pip-install-c7f0sh1z/wxpython_4ca534779ef94539840b93bd127e59a3/buildtools/build_wxwidgets.py", line 373, in main
      "Error running configure")
    File "/tmp/pip-install-c7f0sh1z/wxpython_4ca534779ef94539840b93bd127e59a3/buildtools/build_wxwidgets.py", line 85, in exitIfError
      raise builder.BuildError(msg)
  buildtools.builder.BuildError: Error running configure
  Finished command: build_wx (0m5.576s)
  Finished command: build (0m5.576s)
  Command '"/home/taha/miniconda3/envs/eeg-notebooks/bin/python" -u build.py build' failed with exit code 1.
  ----------------------------------------
  ERROR: Failed building wheel for wxpython
  Running setup.py clean for wxpython
Failed to build wxpython
Installing collected packages: wxpython
    Running setup.py install for wxpython: started
    Running setup.py install for wxpython: finished with status 'error'
    ERROR: Command errored out with exit status 1:
     command: /home/taha/miniconda3/envs/eeg-notebooks/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-c7f0sh1z/wxpython_4ca534779ef94539840b93bd127e59a3/setup.py'"'"'; __file__='"'"'/tmp/pip-install-c7f0sh1z/wxpython_4ca534779ef94539840b93bd127e59a3/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-5uktzmlq/install-record.txt --single-version-externally-managed --compile --install-headers /home/taha/miniconda3/envs/eeg-notebooks/include/python3.7m/wxpython
         cwd: /tmp/pip-install-c7f0sh1z/wxpython_4ca534779ef94539840b93bd127e59a3/
    Complete output (142 lines):
    /home/taha/miniconda3/envs/eeg-notebooks/lib/python3.7/site-packages/setuptools/dist.py:720: UserWarning: Usage of dash-separated 'license-file' will not be supported in future versions. Please use the underscore name 'license_file' instead
      % (opt, underscore_opt)
    /home/taha/miniconda3/envs/eeg-notebooks/lib/python3.7/site-packages/setuptools/dist.py:294: DistDeprecationWarning: use_2to3 is ignored.
      warnings.warn(f"{attr} is ignored.", DistDeprecationWarning)
    running install
    running build
    WARNING: Building this way assumes that all generated files have been
    generated already.  If that is not the case then use build.py directly
    to generate the source and perform the build stage.  You can use
    --skip-build with the bdist_* or install commands to avoid this
    message and the wxWidgets and Phoenix build steps in the future.

    "/home/taha/miniconda3/envs/eeg-notebooks/bin/python" -u build.py build
    Will build using: "/home/taha/miniconda3/envs/eeg-notebooks/bin/python"
    3.7.11 (default, Jul 27 2021, 14:32:16)
    [GCC 7.5.0]
    Python's architecture is 64bit
    cfg.VERSION: 4.1.1

    Running command: build
    Running command: build_wx
    wxWidgets build options: ['--wxpython', '--unicode', '--gtk3']
    Configure options: ['--enable-unicode', '--with-gtk=3', '--enable-sound', '--enable-graphics_ctx', '--enable-display', '--enable-geometry', '--enable-debug_flag', '--enable-optimise', '--disable-debugreport', '--enable-uiactionsim', '--enable-autoidman', '--with-sdl']
    /tmp/pip-install-c7f0sh1z/wxpython_4ca534779ef94539840b93bd127e59a3/ext/wxWidgets/configure --enable-unicode --with-gtk=3 --enable-sound --enable-graphics_ctx --enable-display --enable-geometry --enable-debug_flag --enable-optimise --disable-debugreport --enable-uiactionsim --enable-autoidman --with-sdl
    checking build system type... x86_64-pc-linux-gnu
    checking host system type... x86_64-pc-linux-gnu
    checking for toolkit... gtk
    checking for gcc... gcc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables...
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to accept ISO C89... none needed
    checking whether we are using the Intel C compiler... no
    checking how to run the C preprocessor... gcc -E
    checking for grep that handles long lines and -e... /usr/bin/grep
    checking for egrep... /usr/bin/grep -E
    checking whether gcc needs -traditional... no
    checking for g++... g++
    checking whether we are using the GNU C++ compiler... yes
    checking whether g++ accepts -g... yes
    checking whether we are using the Intel C++ compiler... no
    checking whether we are using the Sun C++ compiler... no
    checking for ar... ar
    checking for ANSI C header files... yes
    checking for sys/types.h... yes
    checking for sys/stat.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for memory.h... yes
    checking for strings.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for unistd.h... yes
    checking for langinfo.h... yes
    checking for wchar.h... yes
    checking for sys/select.h... yes
    checking for cxxabi.h... yes
    checking for an ANSI C-conforming const... yes
    checking for inline... inline
    checking size of short... 2
    checking size of void *... 8
    checking size of int... 4
    checking size of long... 8
    checking size of size_t... 8
    checking size of long long... 8
    checking size of wchar_t... 4
    checking for va_copy... yes
    checking for _FILE_OFFSET_BITS value needed for large files... 64
    checking if large file support is available... yes
    checking for _LARGEFILE_SOURCE value needed for large files... no
    checking whether byte ordering is bigendian... no
    checking for std::wstring in <string>... yes
    checking for std::istream... yes
    checking for std::ostream... yes
    checking for type_traits... yes
    checking for __sync_fetch_and_add and __sync_sub_and_fetch builtins... yes
    checking for libraries directories... /usr/lib64
    checking for cos... no
    checking for floor... no
    checking if floating point functions link without -lm... no
    checking for sin... yes
    checking for ceil... yes
    checking if floating point functions link with -lm... yes
    checking for strtoull... yes
    checking for pkg-config... /usr/bin/pkg-config
    checking pkg-config is at least version 0.9.0... yes
    configure: WARNING: Defaulting to the builtin regex library for Unicode build.
    checking for zlib.h >= 1.1.4... yes
    checking for zlib.h... (cached) yes
    checking for deflate in -lz... yes
    checking for png.h > 0.90... no
    checking for png.h... (cached) no
    configure: WARNING: system png library not found or too old, will use built-in instead
    checking whether png.c file exists... yes
    checking for jpeglib.h... no
    configure: WARNING: system jpeg library not found, will use built-in instead
    checking whether jpeglib.h file exists... yes
    checking lzma.h usability... yes
    checking lzma.h presence... yes
    checking for lzma.h... yes
    checking for lzma_code in -llzma... yes
    checking for jbg_dec_init in -ljbig... no
    checking for LIBTIFF... not found via pkg-config
    checking for tiffio.h... no
    configure: WARNING: system tiff library not found, will use built-in instead
    checking whether tiff.h file exists... yes
    checking for expat.h... no
    configure: WARNING: system expat library not found, will use built-in instead
    checking whether expat.h file exists... yes
    checking for gcc option to accept ISO C99... none needed
    checking for GTK+ version...
    checking for pkg-config... (cached) /usr/bin/pkg-config
    checking pkg-config is at least version 0.16... yes
    checking for GTK+ - version >= 3.0.0... no
    *** Could not run GTK+ test program, checking why...
    *** The test program failed to compile or link. See the file config.log for the
    *** exact error that occurred. This usually means GTK+ is incorrectly installed.
    configure: error:
    The development files for GTK+ were not found. For GTK+ 2, please
    ensure that pkg-config is in the path and that gtk+-2.0.pc is
    installed. For GTK+ 1.2 please check that gtk-config is in the path,
    and that the version is 1.2.3 or above. Also check that the
    libraries returned by 'pkg-config gtk+-2.0 --libs' or 'gtk-config
    --libs' are in the LD_LIBRARY_PATH or equivalent.

    Error running configure
    ERROR: failed building wxWidgets
    Traceback (most recent call last):
      File "build.py", line 1510, in cmd_build_wx
        wxbuild.main(wxDir(), build_options)
      File "/tmp/pip-install-c7f0sh1z/wxpython_4ca534779ef94539840b93bd127e59a3/buildtools/build_wxwidgets.py", line 373, in main
        "Error running configure")
      File "/tmp/pip-install-c7f0sh1z/wxpython_4ca534779ef94539840b93bd127e59a3/buildtools/build_wxwidgets.py", line 85, in exitIfError
        raise builder.BuildError(msg)
    buildtools.builder.BuildError: Error running configure
    Finished command: build_wx (0m6.6s)
    Finished command: build (0m6.6s)
    Command '"/home/taha/miniconda3/envs/eeg-notebooks/bin/python" -u build.py build' failed with exit code 1.
    ----------------------------------------
ERROR: Command errored out with exit status 1: /home/taha/miniconda3/envs/eeg-notebooks/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-c7f0sh1z/wxpython_4ca534779ef94539840b93bd127e59a3/setup.py'"'"'; __file__='"'"'/tmp/pip-install-c7f0sh1z/wxpython_4ca534779ef94539840b93bd127e59a3/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-5uktzmlq/install-record.txt --single-version-externally-managed --compile --install-headers /home/taha/miniconda3/envs/eeg-notebooks/include/python3.7m/wxpython Check the logs for full command output.

The error seems to be only limited to this exact package. All the other requirements have been installed successfully and can be imported and run as well. But wxPython is a requirement for PsychoPy and the user cannot run PsychoPy experiments without fixing this issue.
📷 Screenshots
None
✍ Additional Info:
This seems to be caused by interference between a default PyPI package called wx and the modern edition of the same package, called wxPython. It is used for making widgets on GTK. wxPython is a requirement for PsychoPy and hence a requirement for eeg-notebooks.
The PsychoPy help page outlines this as a way to fix the issue:

Then fetch a wxPython wheel for your platform from:
https://extras.wxpython.org/wxPython4/extras/linux/gtk3/
and having downloaded the right wheel you can then install it with something like:
pip install path/to/your/wxpython.whl
wxPython>4.0 and doesn’t have universal wheels yet which is why you have to find and install the correct wheel for your particular flavor of linux.

One potential issue is that the wxPython wheels are only available for a limited number of distributions and versions:

centos-7
centos-8
debian-8
debian-9
debian-10
fedora-23
fedora-24
fedora-26
fedora-27
fedora-28
fedora-29
fedora-30
fedora-31
ubuntu-14.04
ubuntu-16.04
ubuntu-18.04
ubuntu-20.04

Notably, it does not provide wheels for any of the Arch-based architecture Linux distributions (e.g. Manjaro, ArchLinux, Artix). It only supports the RedHat-based and Debian-based platforms. Even then, it has no support for Fedora > 31 (whereas the latest LTS version is 34). The Debian-based distros' wheels seem to be sufficient. The latest LTS versions are included.
🔧 Suggested fixes:

Include the text quoted above from the PsychoPy help page, for fetching and installing the wxPython wheel.
Add a suggestion to the help pages for Linux users to use either of the distros above, or else they will not be able to use PsychoPy experiments.

Also getting this problem now on linux, where I don't have sudo access.
Solution I found =

create conda env as per eegnb instructions and activate
conda install wxpython
pip install .  in eeg-notebooks folder

Added the conda part of that to the conda tab of the installation instructions
https://github.com/NeuroTechX/eeg-notebooks/commit/55a467f1384a1108231f9e045c6c5793745489ab
https://neurotechx.github.io/eeg-notebooks/getting_started/installation.html#installing-the-python-library
The extra wheels install line should be added to the venv tab part of that box also.


Update storage to 1.3.2.

Did this to update the lower bound on the requests dependency (see #3736).
This PR is an alternative to #3812. Note the diffbase is GoogleCloudPlatform:storage-1.3.2, which is at the same point as the storage-1.3.1 branch:
https://github.com/GoogleCloudPlatform/google-cloud-python/commits/storage-1.3.1
https://github.com/GoogleCloudPlatform/google-cloud-python/commits/storage-1.3.2

I see the version bump but not the minimum dep version bump (or am I just missing something)?

MERP! Good call @jonparrott

@jonparrott PTAL

@jonparrott @lukesneeringer The version bump should also be merged into master, so maybe I should re-open #3812 (though I already deleted my branch)


An error occurred while initializing the browser: Message: session not created: Microsoft Edge failed to start: crashed.

An error occurred while initializing the browser: Message: session not created: Microsoft Edge failed to start: crashed.
(session not created: DevToolsActivePort file doesn't exist)
(The process started from msedge location C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe is no longer running, so msedgedriver is assuming that msedge has crashed.)
Stacktrace:
GetHandleVerifier [0x00007FF62B6DF862+37938]
Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF62B679202+209490]
(No symbol) [0x00007FF62B4C9BB7]
(No symbol) [0x00007FF62B4F6A1A]
(No symbol) [0x00007FF62B4F2CE6]
(No symbol) [0x00007FF62B53136D]
(No symbol) [0x00007FF62B527EA3]
(No symbol) [0x00007FF62B5000BE]
(No symbol) [0x00007FF62B4FEE0D]
(No symbol) [0x00007FF62B4FFC71]
Microsoft::Applications::Events::EventProperty::empty [0x00007FF62B85F944+888740]
(No symbol) [0x00007FF62B5762FC]
Microsoft::Applications::Events::EventProperty::~EventProperty [0x00007FF62B6059DC+36588]
Microsoft::Applications::Events::EventProperty::~EventProperty [0x00007FF62B5FD8A5+3509]
Microsoft::Applications::Events::EventProperty::empty [0x00007FF62B85E905+884581]
Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF62B6822C1+246545]
Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF62B67D674+227012]
Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF62B67D7AB+227323]
Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF62B6741E1+188977]
BaseThreadInitThunk [0x00007FFF8A104CB0+16]
RtlUserThreadStart [0x00007FFF8AC9E8AB+43]
Below is my referenced code:
# Declare the browser variable globally
global browser , browser_name , browser_version , platform_name

edge_driver_path = 'msedgedriver.exe'

# Create Edge options
edge_options = Options()

allTestCases=[]

def initialize_browser():
    global browser, browser_name, browser_version, platform_name
    crx_path = os.path.join(os.getcwd(), '1.7.8_0.crx')
    # Ensure the full path is used to avoid any path issues

    if os.path.exists(crx_path):
        print("File exists, proceeding to add to Edge.")
        try:
            edge_options.add_extension(crx_path)

            # Start Edge WebDriver service
            edge_service = Service(edge_driver_path)

            # Create Edge browser instance
            browser = webdriver.Edge(service=edge_service, options=edge_options)

            # Get browser and OS information
            browser_name = browser.capabilities.get('browserName', 'Not available')
            browser_version = browser.capabilities.get('browserVersion', 'Not available')
            platform_name = browser.capabilities.get('platformName', 'Not available')

            # Print browser and OS information
            print("Browser Name:", browser_name)
            print("Browser Version:", browser_version)
            print("Platform Name:", platform_name)
            print("Browser initialized successfully.")
        except Exception as e:
            print("An error occurred while initializing the browser:", str(e))
    else:
        print("File does not exist, check the path and permissions.")

Is there a solution for this yet?

Possible duplicate of #108

facing same

Possible duplicate of #108

no its different

An error occurred while initializing the browser: Message: session not created: Microsoft Edge failed to start: crashed. (session not created: DevToolsActivePort file doesn't exist) (The process started from msedge location C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe is no longer running, so msedgedriver is assuming that msedge has crashed.) Stacktrace: GetHandleVerifier [0x00007FF62B6DF862+37938] Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF62B679202+209490] (No symbol) [0x00007FF62B4C9BB7] (No symbol) [0x00007FF62B4F6A1A] (No symbol) [0x00007FF62B4F2CE6] (No symbol) [0x00007FF62B53136D] (No symbol) [0x00007FF62B527EA3] (No symbol) [0x00007FF62B5000BE] (No symbol) [0x00007FF62B4FEE0D] (No symbol) [0x00007FF62B4FFC71] Microsoft::Applications::Events::EventProperty::empty [0x00007FF62B85F944+888740] (No symbol) [0x00007FF62B5762FC] Microsoft::Applications::Events::EventProperty::~EventProperty [0x00007FF62B6059DC+36588] Microsoft::Applications::Events::EventProperty::~EventProperty [0x00007FF62B5FD8A5+3509] Microsoft::Applications::Events::EventProperty::empty [0x00007FF62B85E905+884581] Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF62B6822C1+246545] Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF62B67D674+227012] Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF62B67D7AB+227323] Microsoft::Applications::Events::ILogConfiguration::operator* [0x00007FF62B6741E1+188977] BaseThreadInitThunk [0x00007FFF8A104CB0+16] RtlUserThreadStart [0x00007FFF8AC9E8AB+43]
Below is my referenced code:
# Declare the browser variable globally
global browser , browser_name , browser_version , platform_name

edge_driver_path = 'msedgedriver.exe'

# Create Edge options
edge_options = Options()

allTestCases=[]

def initialize_browser():
    global browser, browser_name, browser_version, platform_name
    crx_path = os.path.join(os.getcwd(), '1.7.8_0.crx')
    # Ensure the full path is used to avoid any path issues

    if os.path.exists(crx_path):
        print("File exists, proceeding to add to Edge.")
        try:
            edge_options.add_extension(crx_path)

            # Start Edge WebDriver service
            edge_service = Service(edge_driver_path)

            # Create Edge browser instance
            browser = webdriver.Edge(service=edge_service, options=edge_options)

            # Get browser and OS information
            browser_name = browser.capabilities.get('browserName', 'Not available')
            browser_version = browser.capabilities.get('browserVersion', 'Not available')
            platform_name = browser.capabilities.get('platformName', 'Not available')

            # Print browser and OS information
            print("Browser Name:", browser_name)
            print("Browser Version:", browser_version)
            print("Platform Name:", platform_name)
            print("Browser initialized successfully.")
        except Exception as e:
            print("An error occurred while initializing the browser:", str(e))
    else:
        print("File does not exist, check the path and permissions.")

selenium? same bug after trying other driver

fixed mine, i dont think its a bug with the webdriver........how i fix mine
I handle error every statement i made and i am able to see the bug caused by me


Building changelog fails on double quote in a commit message

The action fails when there's a " character somewhere in commit messages or PR names. The error message is conditional binary operator expected.
It occurs in an auto-generated block:
if [[ "false" == "true" || "## What’s Changed

// a commit message string containing double quote, e.g.:
// feat: implemented "hello world"

" == "no changes" ]]; then
    exit 1
fi

The changelog config json:
{
  "sort": "DESC",
  "template": "## What’s Changed\n\n${{UNCATEGORIZED}}",
  "pr_template": "* ${{TITLE}} (#${{NUMBER}})",
  "empty_template": "no changes"
}

The expected behavior here is to have double quotes automatically escaped.

@antongoncharov-ingka just to ensure I fully understand.
You are using the result of the changelog builder action within a bash script in a follow up step?
I am not sure if the action should be responsible to change the output for bash scripts. After all the action properly reflects the expected output (as the input did contains those characters).
It looks you are actually trying to identify if there have been any changes. Post action run.
This can also be achieved by checking if outputs.categorized_prs and outputs.uncategorized_prs contains no PRs. (in your case maybe even only the categorized ones?

@mikepenz You're right, that's my misunderstanding, I initially thought this step was embedded into the plugin. This issue may be closed, I agree with you that it should be escaped externally.


Slack Block Actions keeps repeating

I have a weird issue where block actions keep adding an additional repeated message per each conversation.
For example I have the bot responding to both the keywords 'vpn' or 'password reset'. After it responds to the message it also then provides a yes or no block action button to select to see if the response was helpful or not.
If I reboot the bot and select 'yes' or 'no' it responds once, however if I then ask the question again and select yes or no it repeats the response twice. If I ask again and select 'yes' or 'no' it repeats it 3 times again 4 times, etc etc. It will continue to add an additional repeat until I reboot the bot again. Is there a way to solve this?
See attached screenshot for example:

 //Password Reset
    controller.hears('password reset', 'message,direct_message,mention,direct_mention', async(bot, message) => {
        const Messages = new Msg ({heard:message.text});
        await Messages.save();
        await bot.replyEphemeral(message,{
            blocks: [
                {
                    "type": "image",
                    "title": {
                      "type": "plain_text",
                      "text": "Steps for changing your password."
                    },
                    "block_id": "image4",
                    "image_url": "https://www.linkpicture.com/q/index_7.png",
                    "alt_text": "How To Change Your Password."
                  },
                  {
                    "type": "section",
                    "text": {
                        "type": "mrkdwn",
                        "text": "*Did you find this helpful?*"
                    }
                },
                {
                    "type": "actions",
                     "elements": [
                {
                    "type": "button",
                    "text": {
                        "type": "plain_text",
                        "text": "Yes",
                        "emoji": true
                    },
                    "value": "Yes"
                },
                {
                    "type": "button",
                    "text": {
                        "type": "plain_text",
                        "text": "No",
                        "emoji": true
                    },
                    "value": "No"
                },
            ]
        }
    ]
        });
        controller.on('block_actions', async (bot, message) => {
            if (message.incoming_message.channelData.actions[0].value === 'No'){
               await bot.replyEphemeral(message, 'If you need further assistance please reach out to us on chat at  or call .');
               await Messages.updateOne({resolved:message.incoming_message.text});
           } else if (message.incoming_message.channelData.actions[0].value === 'Yes'){
               await bot.replyEphemeral(message, 'Great! Is there anything else I can assist you with today?');
               await Messages.updateOne({resolved:message.incoming_message.text});
          }
        });
   });

Sorry for the very slow response here @Mattw11486 ---
the problem is that you are defining the handler for block_actions inside of another handler. That means it gets duplicated each time the handler is fired.
Make sure all your controller.on and controller.hears statements are at the same level of code - never inside each other.


Property 'TypeGraphQLMetadataStorage' does not exist on type 'Global'.

Describe the bug
return new TSError(diagnosticText, diagnosticCodes)
^
TSError: » Unable to compile TypeScript:
node_modules/type-graphql/src/metadata/getMetadataStorage.ts(5,12): error TS2339: Property 'TypeGraphQLMetadataStorage' does not exist on type 'Global'.
node_modules/type-graphql/src/metadata/getMetadataStorage.ts(5,50): error TS2339: Property 'TypeGraphQLMetadataStorage' does not exist on type 'Global'.
To Reproduce
I'm on typescript@next, so it's probably because of that, but seems like it should be fixed
Expected behavior
no error
Enviorment (please complete the following information):

OS: Windows
Node (e.g. 10.5.0)
Package version 0.12.2
TypeScript version 3.0.0-dev.20180712

note that it's probably related to @types/node overriding the global declaration

using transpile only did solve the problem
perhaps you would have problems in this depot if you installed @types/node?

No, I've updated @types/node yesterday :wink:
This is issue with ambient module declarations that aren't working in ts-node@7:
https://github.com/TypeStrong/ts-node/issues/615


[chip-test] chip_sw_pwrmgr_debug_sleep

Test point name
chip_sw_pwrmgr_debug_sleep
Host side component
SystemVerilog+Rust
OpenTitanTool infrastructure implemented
Unknown
Contact person
@msfschaffner
Checklist
Please fill out this checklist as items are completed. Link to PRs and issues as appropriate.

[ ] Check if existing test covers most or all of this testpoint (if so, either extend said test to cover all points, or skip the next 3 checkboxes)
[ ] Device-side (C) component developed
[ ] Bazel build rules developed
[ ] Host-side component developed
[ ] HJSON test plan updated with test name (so it shows up in the dashboard)
[ ] Test added to dvsim nightly regression (and passing at time of checking)

I don't think this test is actually required anymore.
@matutem could you help confirm? It's just going to be not setting the hint, there's no related hardware feature here.

There is no connection from rv_dm to the pwrmgr to prevent pwrmgr from going into low power state.
The associated bug on this is still open: https://github.com/lowRISC/opentitan/issues/7215

that's right, and there's not going to be for this iteration. #7215 should be marked as future release.
If I mark that one as such, then this one can be closed right?

that's right, and there's not going to be for this iteration. #7215 should be marked as future release. If I mark that one as such, then this one can be closed right?

o wait it's already marked future release.

I think so, yes. We should also remove it from the testplan then...

Done in #14508. Thanks!


App uploading failed due to new app-store version

See image build failed after in processing

It may happen for new app-store update
https://github.com/fastlane/fastlane/issues/16621

We just ran into this issue. Fastlane log indicates:
/Users/runner/work/r1/a/ios-publisher/bundle/ruby/2.7.0/gems/fastlane-2.150.0.rc1/spaceship/lib/spaceship/connect_api/client.rb:134:in `handle_response': The request cannot be fulfilled because of the state of another resource. - Submit for review errors found. (Spaceship::UnexpectedResponse)
The provided entity is missing a required attribute - You must provide a value for the attribute 'whatsNew' with this request
Field for release notes no longer applies for Apple Connect. I'm not sure how this is defined as a "feature request" as the release to stores is now broken.

Having the same issue - whats wrong here?

@noxe I have a support ticket for this. It's a little cryptic but they might be intimating it's a fastlane issue by providing me this link but they have "back-end team" looking at it. I'll update this feature request as I hear more.

thank you!

As of today we now have an additional error message?
i cannot publish updates currently via appcenter?
Oops! Compliance Info and Release notes are not updated in App Store. Alternatively, you can set 'ITSAppUsesNonExemptEncryption' flag in info.plist and redistribute.

@noxe, @jayesh-hyperspace ... can you provide the error messages from your fastlane logs? It would be helpful to see if we are getting the same errors or different ones. In my case the app still arrived at Apple Connect it was just missing information required to go to review. I was able to manually add the information and submit the app for review. I would recommend submitting a ticket with support and linking to this "feature request".

Hi,
"Oops! Compliance Info and Release notes are not updated in App Store. Alternatively, you can set 'ITSAppUsesNonExemptEncryption' flag in info.plist and redistribute."
logs (3).txt

I had manually uploaded the IPA today - and had to set some additional options, for the first time today?
Ad-ID (IDFA) and some encryption export regulation... (https://developer.apple.com/documentation/security/complying_with_encryption_export_regulations)

Hi @rlasker-b2w
Thanks for reply but right now i'm stuck other issue please look at this
And already updated plist file as per suggestion.
Here i'm attaching screenshot as well fastlane log so it might be helpful for you
logs.txt

Had asolutly the same - i had to manually upload the IPA file today - and sign some export encryption compliance (https://developer.apple.com/documentation/security/complying_with_encryption_export_regulations) - and set an checkbox about an Ad-ID (IDFA) - after that i manually set the version for checking

@jayesh-hyperspace  and rest,
There was so much stuff happened at fastlane side with much bigger commits adde addressing almost all the issues in this thread mentioned.
https://github.com/fastlane/fastlane/pull/16640
And we have rolled out our servers with this latest fastlane.
Would be great if you can retry. Thanks.

still does not work:
/Users/runner/work/r1/a/ios-publisher/bundle/ruby/2.7.0/gems/fastlane-2.150.1/spaceship/lib/spaceship/connect_api/client.rb:164:in `handle_response': The request cannot be fulfilled because of the state of another resource. - Submit for review errors found. (Spaceship::UnexpectedResponse)
The provided entity is missing a required attribute - You must provide a value for the attribute 'whatsNew' with this request
logs (2).txt

Can we fix this!??!? thank you

# fastlane 2.155.3 is available.
# You should use the latest version.
# Please update using `bundle update fastlane`.
#######################################################################
/Users/runner/work/r1/a/ios-publisher/bundle/ruby/2.7.0/gems/fastlane-2.152.0/spaceship/lib/spaceship/connect_api/client.rb:163:in `handle_response': \e[31m[!] The request cannot be fulfilled because of the state of another resource. - Submit for review errors found. (Spaceship::UnexpectedResponse)
The provided entity is missing a required attribute - You must provide a value for the attribute 'whatsNew' with this request\e[0m
	** Hidden Stack Trace ** `post'
	** Hidden Stack Trace ** `post_app_store_version_submission'
	** Hidden Stack Trace ** `create_app_store_version_submission'
	** Hidden Stack Trace ** `submit!'
	** Hidden Stack Trace ** `submit_for_review'
	** Hidden Stack Trace ** `run'
	** Hidden Stack Trace ** `block (2 levels) in run'
	** Hidden Stack Trace ** `call'
	** Hidden Stack Trace ** `run'
	** Hidden Stack Trace ** `run_active_command'
	** Hidden Stack Trace ** `run!'
	** Hidden Stack Trace ** `run!'
	** Hidden Stack Trace ** `run'
	** Hidden Stack Trace ** `start'
	** Hidden Stack Trace ** `take_off'
	** Hidden Stack Trace ** `<top (required)>'
	** Hidden Stack Trace ** `load'
	** Hidden Stack Trace ** `<main>'
/Users/runner/work/r1/a/ios-publisher/bundle/ruby/2.7.0/gems/fastlane-2.152.0/spaceship/lib/spaceship/connect_api/client.rb:163:in `handle_response': The request cannot be fulfilled because of the state of another resource. - Submit for review errors found. (Spaceship::UnexpectedResponse)
The provided entity is missing a required attribute - You must provide a value for the attribute 'whatsNew' with this request
	** Hidden Stack Trace ** `post'
	** Hidden Stack Trace ** `post_app_store_version_submission'
	** Hidden Stack Trace ** `create_app_store_version_submission'
	** Hidden Stack Trace ** `submit!'
	** Hidden Stack Trace ** `submit_for_review'
	** Hidden Stack Trace ** `run'
	** Hidden Stack Trace ** `block (2 levels) in run'
	** Hidden Stack Trace ** `call'
	** Hidden Stack Trace ** `run'
	** Hidden Stack Trace ** `run_active_command'
	** Hidden Stack Trace ** `run!'
	** Hidden Stack Trace ** `run!'
	** Hidden Stack Trace ** `run'
	** Hidden Stack Trace ** `start'
	** Hidden Stack Trace ** `take_off'
	** Hidden Stack Trace ** `<top (required)>'
	** Hidden Stack Trace ** `load'
	** Hidden Stack Trace ** `<main>'

Seeing the same issue as well using App Center
"You must provide a value for the attribute 'whatsNew' with this request"

Just did a deploy on Friday and got this same problem.
Support Id: c8492584-b26b-486a-adf6-4d1ac3672991
/Users/runner/work/r1/a/ios-publisher/bundle/ruby/2.7.0/gems/fastlane-2.152.0/spaceship/lib/spaceship/connect_api/client.rb:163:in handle_response': The request cannot be fulfilled because of the state of another resource. - Submit for review errors found. (Spaceship::UnexpectedResponse) The provided entity is missing a required attribute - You must provide a value for the attribute 'whatsNew' with this request 	** Hidden Stack Trace ** post'
** Hidden Stack Trace ** post_app_store_version_submission' 	** Hidden Stack Trace ** create_app_store_version_submission'
** Hidden Stack Trace ** submit!' 	** Hidden Stack Trace ** submit_for_review'
** Hidden Stack Trace ** run' 	** Hidden Stack Trace ** block (2 levels) in run'
** Hidden Stack Trace ** call' 	** Hidden Stack Trace ** run'
** Hidden Stack Trace ** run_active_command' 	** Hidden Stack Trace ** run!'
** Hidden Stack Trace ** run!' 	** Hidden Stack Trace ** run'
** Hidden Stack Trace ** start' 	** Hidden Stack Trace ** take_off'
** Hidden Stack Trace ** <top (required)>' 	** Hidden Stack Trace ** load'
** Hidden Stack Trace ** `'

I am having this error while trying to send to Production App Store:
Oops! Something went wrong. Please check logs for more details. Support Id: 48711d0d-3c0f-4c27-aada-5f2cc3bb463b
When checking logs, I found out this:
/Users/runner/work/r1/a/ios-publisher/bundle/ruby/2.7.0/gems/fastlane-2.152.0/spaceship/lib/spaceship/connect_api/client.rb:163:in `handle_response': \e[31m[!] The request cannot be fulfilled because of the state of another resource. - Submit for review errors found. (Spaceship::UnexpectedResponse)
The provided entity is missing a required attribute - You must provide a value for the attribute 'whatsNew' with this request
The provided entity is missing a required attribute - You must provide a value for the attribute 'whatsNew' with this request\e[0m
I did provide a release note, but maybe it needs to be localized as, whenever I go to App Store Connect, it asks me to fill the release notes for every language to be able to submit it. Are you going to provide a way to send localized release notes to fix this issue?

We received the same error today: You must provide a value for the attribute 'whatsNew' with this request
Is there any update on this?

This seems to be a known issue on fastlane, which I reported to their repository.
https://github.com/fastlane/fastlane/issues/16700#issuecomment-670324834

try to force it in lane declaration, i pasted example here

I have the same issue, is there any workaround?

@peirens-bart while it is an annoyance it seems to be workable as, at least for me, the App still gets delivered to Apple Connect you just need to re-fill the What's new section.

@rlasker-b2w what do you mean by "re-fill the What's new section". I can't see any field that label. the only thing I can see is "release notes " where is states "optional"

@peirens-bart what I mean is that the app, at least for us, still got delivered to Apple Connect despite the error message in App Center. So you can fill in the missing details there and submit it for review.

Hi, still having this issue as the rest of the guys. Appcenter has been broken for months and still no fix?

I am agains seeing this problem though it is a different and the end result is that the app does NOT make it to Apple Connect Store so there is no work around. It seems the only option will be to use Apple Connect on a mac. Since this is a new error and is blocking I am logging a new error for this.
The new fastlane error is:
[!] Syntax error in your configuration file './Deliverfile' on line 19: (eval):19: syntax error, unexpected constant, expecting '}'
* "Object reference not set to an inst...
^~~~~~
(eval):19: syntax error, unexpected local variable or method, expecting '('
* "Object reference not set to an instance of an object...
^~~
(eval):19: syntax error, unexpected '}', expecting end-of-input
...ror message in certain cases."})
...                              ^

Got this same problem again in a release today. Same result. App arrives at App Store Connect but release notes are not present. Any plans to fix this?
Users/runner/work/r1/a/ios-publisher/bundle/ruby/2.7.0/gems/fastlane-2.162.0/spaceship/lib/spaceship/connect_api/api_client.rb:188:in `handle_response': The request cannot be fulfilled because of the state of another resource. - Submit for review errors found. (Spaceship::UnexpectedResponse)
The provided entity is missing a required attribute - You must provide a value for the attribute 'whatsNew' with this request

I think we need to start looking for an alternative to AppCenter…
This critical bug has been around for months now and their support are saying they’re aware of it but with no plans on the roadmap to fix it...

On 24 Nov 2020, at 20:19, rlasker-b2w<EMAIL_ADDRESS>wrote:
Got this same problem again in a release today. Same result. App arrives at App Store Connect but release notes are not present. Any plans to fix this?
Users/runner/work/r1/a/ios-publisher/bundle/ruby/2.7.0/gems/fastlane-2.162.0/spaceship/lib/spaceship/connect_api/api_client.rb:188:in `handle_response': The request cannot be fulfilled because of the state of another resource. - Submit for review errors found. (Spaceship::UnexpectedResponse)
The provided entity is missing a required attribute - You must provide a value for the attribute 'whatsNew' with this request
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/microsoft/appcenter/issues/1909#issuecomment-733211384, or unsubscribe https://github.com/notifications/unsubscribe-auth/AANN3RJSCER7IBHTUMTUSRTSRQIMNANCNFSM4OBP7VMA.

same here....

same here!! -

@ajaykn What happened to the update?
This is still an issue. Can you please provide us with info about why this potentially pretty easy fix isn't prioritized?

@ajaykn support had sent me this:
"we are waiting for the fix from fastlane. which haven't provided any updates as of yet  https://github.com/fastlane/fastlane/issues/16700#issuecomment-670324834"

Hello guys, any updates? I'm facing the same issue here : The provided entity is missing a required attribute - You must provide a value for the attribute 'whatsNew' with this request

It’s been 6 months and they haven’t fixed the problem. This happens when Microsoft buys a product :)
I switched to codemagic.io, took a few hours to set up but it’s working perfectly.
Kind regards,
Ilya
Founder/CEO at Einee
The app that teaches kids what schools do not.
Einee | LinkedIn | Twitter
On 5 Feb 2021, 12:45 +0000, Lucas Mariz<EMAIL_ADDRESS>wrote:

Hello guys, any updates? I'm facing the same issue here : The provided entity is missing a required attribute - You must provide a value for the attribute 'whatsNew' with this request
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

Hello guys, any updates? I'm facing the same issue here : The provided entity is missing a required attribute - You must provide a value for the attribute 'whatsNew' with this request

It appears our current workaround is to simply log into App Store Connect after we attempt to distribute, add the "What's New" text and submit manually.
We need a fix!

Hello guys, any updates? I'm facing the same issue here : The provided entity is missing a required attribute - You must provide a value for the attribute 'whatsNew' with this request

It appears our current workaround is to simply log into App Store Connect after we attempt to distribute, add the "What's New" text and submit manually.
We need a fix!

Yes, I did that and it worked. But I have more than 40 apps to release continually and we use GitHub actions to automatize the deployment process. I need to automatize the greatest part of the process in order to improve our scalability. Unfortunately, release everything manually is not an option for us....
Please guys, fix that asap

Seems like a work is in progress in fastlane.
https://github.com/fastlane/fastlane/issues/16700
Are you (AppCenter folks) following this progress?

same bug around here

OMG. It's been a year now since this issue was reported. Last week, I faced this issue and had to submit our IPA file to Apple Store manually.  ='(

I got the issue here, but then it was in the applestore connect with a Prepare for submission status. It seems that at least the IPA was uploaded.

I successfully uploaded the ipa I get a status of failed but the ipa goes to Appstore. Only thing I got to do is manually add the whats new and send for review. No the end of the world I guess.

Try to delete existing project and create a new one.

Do you mean 'add new app'?

Yes, I've added a new app and since then this issue didn't occur any more

same problem here. Any news on a real fix?

same problem here. Any news on a real fix?

Hello! We've updated to version 2.196.0 of Fastlane in our services. Can you please try creating a new app and see if issue still occurs?

same problem here. Any news on a real fix?

Hello! We've updated to version 2.196.0 of Fastlane in our services. Can you please try creating a new app and see if issue still occurs?

Yes is still occurring, "Release notes" data coming from AppCenter is not reaching "What's new" on Apple store API

Guys, this is getting ridiculous! Is there a workaround that doesn't include manual work? We are using AppCenter to distribute close to 100 apps - manual doesn't cut it!

Well, we are moving on Jenkins + Fastlane due to this issue and some others like keep losing the AppleStore auth, and the config based by branches which enforces a project pattern :/

Yep got the same error still not fixed

Any news? We have a lot of apps in five languages so it is terrible to manually enter the "whats new"!

It can be done without creating a new version in Connect. If you publish via AppCenter it creates a new version without "Whats new", but there is a time window till Apple processes the build. So you have like 10 minutes where you can edit and save the new version. After the time window fastlane completes the publishing and Connect won't throw an error with missing Whats new.
We do it like that for many apps (like 100). It would be better without this small manual edit!! But it works.

Hi - The connect API connection should be able to solve this known issue. It's available in the portal, so please give it a try and report any issues you might face. I'm doing my best with the current priorities and capacity we're at, but my sincere apologies we are not as fast in resolving issues. Thank you for your patience.

i have the same problem, its no Wasn't it fixed via app center?

So this still seems to be an issue? On App Store Connect the "What's New in This Version" section is blank, despite filling in "release notes". As a result the app is not automatically submitted for review to the app store

I am also facing this issue in version 5.0.0 of appcenter. I have to manually add the "What's New" string on AppStoreConnect everytime I distribute via AppCenter. Since the upload fails (The provided entity is missing a required attribute - You must provide a value for the attribute 'whatsNew' with this request) and the build stays on "Prepare for Submission" until you fill in the "What's new" string.

The connect API connection should be able to solve this known issue.

@wisdeom Could you explain more about what you mean by this? Are you referring to the app store connect integration within AppCenter? I couldn't see anything relevant we can set there to resolve the issue.


Fix some mobile prblems on episode page.

no new snaps?

yeah just pushed, hopefully it goes green after that


hey i was writing something similar to ur code. How does ur code pushes packets to ffmpeg?

Hi. Yes, it does work. However, it does a VP8 -> H264 conversion which is quite CPU intensive and can be avoided; you're bound to run into problems with it eventually.
You can instead require H264 video input and send that to ffmpeg directly. I just got around to the rewrite yesterday and would update the repo when I'm done.
This thread https://github.com/pion/example-webrtc-applications/issues/62 should be useful.

hi, actually my full project description and repo is https://github.com/mohit810/streamingcdn . My main goal is "To receive the broadcast, Convert it into hls in various quality then push those to cdn to serve to the User." . I was understanding ffmpeg's documentation for basic understanding. The main thing for me is to understand how does the rtp packets will reach to ffmpeg function, because when i am adding the push opus/vp8 & ffmpeg code mine videoBuilder.Pop() is always null and when it's not  the videoKeyframe := (sample.Data[0]&0x1 == 0)  videoKeyframe is false. It would be really helpfull if u could give me pointers..

Hey, what is the codec for your input video?
Also, audioWriter and videoWriter would be initialized when the first packets are sent and ffmpeg is also called check this line.
Subsequents writes to the Writer interfaces would update the feed to ffmpeg check this line and  this

Also, since you're using hls, you should be able to send H264 directly to the HLS stream without doing the VP8 conversion. Depends on your use case.

Hey, what is the codec for your input video?
Also, audioWriter and videoWriter would be initialized when the first packets are sent and ffmpeg is also called; check this line.
Subsequent writes to the Writer interfaces would update the feed to ffmpeg check this line and this

The problem is that in my code the videoKeyframe := (sample.Data[0]&0x1 == 0)  and videoKeyframe is false and the code never reaches to the ffmpeg function call. I will add a dev branch to update the code with daily progress.

Okay. Meanwhile, I just updated the repo following the style in this example.
With the initial code, I also noticed that videoKeyFrame was always false if the video input was from navigator.getdisplaymedia for screen capture but worked fine for webcam capture. That's why I asked about your input video format.

Okay. Meanwhile, I just updated the repo following the style in this example.
With the initial code, I also noticed that videoKeyFrame was always false if the video input was from navigator.getdisplaymedia for screen capture but worked fine for webcam capture. That's why I asked about your input video format.

The js file that handles the front end logic is at -
https://github.com/mohit810/streamingcdn/blob/master/public/demo.js.
The line handling the the input stream is https://github.com/mohit810/streamingcdn/blob/789fc65eb76e5cca0595bc0a42d84d239baecfcf/public/demo.js#L45

I'm glad you were able to get it to work. Were you able to convert the stream to HLS?
Sorry I haven't yet been able to add a readme :( would do that soon.

I'm glad you were able to get it to work. Were you able to convert the stream to HLS?
Sorry I haven't yet been able to add a readme :( would do that soon.

Yeah it's working and there are some issues (there are some stream speed, quality,.. issues ), solving these issue.

Okay great. How are you going about solving the stream quality issues?

Okay great. How are you going about solving the stream quality issues?

Currently, I am reading and understanding different examples and solution to resolve that.

Okay.

@grantfayvor  hi, you are using ffmpeg some code like this, exec.Command("ffmpeg", ...). A ffmpeg process running, I want to know when the process will stop? So I want the ffmpeg process stop automatically when my video broadcast stop, can you give me some pointer, thanks!

get it, may be I can use exec.CommandContext with cancel!

Yes @lichao201626 you can use the commandcontext and cancel when done.

Yes @lichao201626 you can use the commandcontext and cancel when done.

Hey @grantfayvor i have given u access in the repository and @lichao201626 if u wanna join and contribute also, do let me know.

Sure, meanwhile I updated the ffmpeg call to use exec.CommandContext just like @lichao201626  suggested, so that it can be cancelled.

Sure, meanwhile I updated the ffmpeg call to use exec.CommandContext just like @lichao201626 suggested, so that it can be cancelled.

 I am looking for the solution for this but if u find something that i missed, do let me know

hi @mohit810 sadly, i do not know so much about ffmpeg commands.

Sure, meanwhile I updated the ffmpeg call to use exec.CommandContext just like @lichao201626 suggested, so that it can be cancelled.

hey @grantfayvor i am still getting:
EOF write udp <IP_ADDRESS>:54307-><IP_ADDRESS>:4000: use of closed network connection
in terminal when user disconnects from the server even after applying this new patch

Hi, @mohit810 I noticed that as well but I haven't gotten a chance to work on it yet. It might be happening because the goroutine on this line wasn't exited. You can refactor it to depend on context as well.

Hi, @mohit810 I noticed that as well but I haven't gotten a chance to work on it yet. It might be happening because the goroutine on this line wasn't exited. You can refactor it to depend on context as well.

hey @grantfayvor can u clone https://github.com/mohit810/streamingcdn and run it and let me know if hls conversion is working or not because its working on other setups other than mine. just want to confirm.. post successful run there should me 5 .m3u8 extension files as well as various .ts extension file

@mohit810 That will be pretty cool if I can join and contribute, though I don't have much time

@grantfayvor  I have released the v3.1 in which, the code is converting webrtc -> HLS . I saw that you are setting up dynamic ports code(that's really awesome).. Once yours is complete , I will also integrate that one as well. Till then i will make my code more modular and add master playlist...

Hi @mohit810 Yeah I added some code to the dynamic-udp-ports branch. It currently picks a random unassigned port in range of 1000 possible ports. It works but I've wondered if there's a better way to go about it. If you have a better suggestion I'm open to it.

Hi @mohit810 Yeah I added some code to the dynamic-udp-ports branch. It currently picks a random unassigned port in range of 1000 possible ports. It works but I've wondered if there's a better way to go about it. If you have a better suggestion I'm open to it.

@grantfayvor I don't know anything about that. Even if I try to understand the basic workings on things, it would take time and right now I am working on the final steps before cdn integration of the webrtc - > HLS.


comet错误

[05/18/17 15:48:56] [EROR] key: 0_4 server websocket failed error(websocket: close 1001 (going away))
[05/18/17 15:48:56] [DEBG] key: 0_4 wakeup exit dispatch goroutine
[05/18/17 15:48:56] [DEBG] key: 0_4 dispatch goroutine exit
[05/18/17 15:48:56] [DEBG] key: 0_4 server websocket goroutine exit
[05/18/17 15:48:56] [DEBG] start websocket serve "<IP_ADDRESS>:8090" with "<IP_ADDRESS>:52313"
[05/18/17 15:48:56] [DEBG] "0_5" hit channel bucket index: 194 use cityhash
[05/18/17 15:48:56] [DEBG] key: 0_5 start dispatch websocket goroutine
[05/18/17 15:48:56] [DEBG] ring wp: 1, idx: 1
[05/18/17 15:48:56] [DEBG] ring rp: 1, idx: 1
[05/18/17 15:50:20] [EROR] key: 0_5 server websocket failed error(websocket: close 1001 (going away))
[05/18/17 15:50:20] [DEBG] key: 0_5 wakeup exit dispatch goroutine
[05/18/17 15:50:20] [DEBG] key: 0_5 dispatch goroutine exit
[05/18/17 15:50:20] [DEBG] key: 0_5 server websocket goroutine exit
[05/18/17 15:50:21] [DEBG] start websocket serve "<IP_ADDRESS>:8090" with "<IP_ADDRESS>:52333"
[05/18/17 15:50:21] [DEBG] "0_6" hit channel bucket index: 237 use cityhash
[05/18/17 15:50:21] [DEBG] key: 0_6 start dispatch websocket goroutine
[05/18/17 15:50:21] [DEBG] ring wp: 1, idx: 1
[05/18/17 15:50:21] [DEBG] ring rp: 1, idx: 1
[05/18/17 15:50:40] [EROR] key: 0_3 server websocket failed error(websocket: close 1001 (going away))
[05/18/17 15:50:40] [DEBG] key: 0_3 wakeup exit dispatch goroutine
[05/18/17 15:50:40] [DEBG] key: 0_3 dispatch goroutine exit
[05/18/17 15:50:40] [DEBG] key: 0_3 server websocket goroutine exit
[05/18/17 15:50:40] [DEBG] start websocket serve "<IP_ADDRESS>:8090" with "<IP_ADDRESS>:52345"
[05/18/17 15:50:40] [DEBG] "0_7" hit channel bucket index: 28 use cityhash
[05/18/17 15:50:40] [DEBG] key: 0_7 start dispatch websocket goroutine
[05/18/17 15:50:40] [DEBG] ring wp: 1, idx: 1
[05/18/17 15:50:40] [DEBG] ring rp: 1, idx: 1
[05/18/17 15:50:45] [DEBG] start websocket serve "<IP_ADDRESS>:8090" with "<IP_ADDRESS>:52349"
[05/18/17 15:50:46] [EROR] handshake failed error(invalid character 'g' looking for beginning of value)
[05/18/17 15:54:21] [DEBG] ring wp: 2, idx: 2
[05/18/17 15:54:21] [DEBG] ring rp: 2, idx: 2
[05/18/17 15:54:40] [DEBG] ring wp: 2, idx: 2
[05/18/17 15:54:40] [DEBG] ring rp: 2, idx: 2
[05/18/17 15:58:21] [DEBG] ring wp: 3, idx: 3
[05/18/17 15:58:21] [DEBG] ring rp: 3, idx: 3
[05/18/17 15:58:40] [DEBG] ring wp: 3, idx: 3
[05/18/17 15:58:40] [DEBG] ring rp: 3, idx: 3
[05/18/17 16:02:21] [DEBG] ring wp: 4, idx: 4
[05/18/17 16:02:21] [DEBG] ring rp: 4, idx: 4
[05/18/17 16:02:40] [DEBG] ring wp: 4, idx: 4
[05/18/17 16:02:40] [DEBG] ring rp: 4, idx: 4
请问这是什么问题

协议错误

现在comet install的时候编译不了

@op-shanghan 已经修复


fix: additional properties warnings on allOf

What/Why/How?
Allows additionalProperties on example linting inside allOf for no-invalid-media-type-examples rule.
This is done to fix #552 issue, where it mistakenly produced warnings for additional properties inside allOf.
Reference
Closes #552
Testing
Screenshots (optional)
Check yourself

[x] Code is linted
[x] Tested with redoc/reference-docs/workflows
[x] All new/updated code is covered with tests

Security

[x] Security impact of change has been considered
[x] Code follows company security practices and guidelines

The idea is to replace defaulting additionalProperties: false with unevaluatedProperties: false. Let's check it that works.

^ Yes, need to use unevalutedProperties there, as they work similar to additionalProperties, but propagate through allOfs, $refs, etc.
Here's how additionalProperties was added: https://github.com/Redocly/ajv/commit/9a390960e759ffa8bf6df1f993ec1f55f50de584
we need to do to something similar with unevalutedProperties, but its not so trivial, as they work a bit differently in ajv's code


57: Fix bug with spell filtering - [merged]

In GitLab by @Asacolips on Apr 2, 2021, 21:13
Merges 57-roll-refactor -> beta

Updated level up dialog to not show "Choose Spells" if the class
doesn't have any spells.
Fixed a bug that prevented custom class spells from appearing in the
level up dialog.
Added template partials for moves in the level up dialog to simplify
them.

Closes #57

In GitLab by @Asacolips on Apr 2, 2021, 22:23
mentioned in commit 6da7de955d85344a2b9828926521268da3bf3ea6

In GitLab by @Asacolips on Apr 2, 2021, 22:22
changed target branch from master to beta


Fix .form-control:disabled color

This PR sets a contrasting foreground color for disabled fields.
This should be fixed in CNVS (here's the issue). cc @ashenden
Before:

After:

@jfurrow see comment left in CNVS

@jfurrow I'm going to label this for the moment, your call on whether or not to merge it.

Thanks @philipnrmn!
In debugging this, I discovered a bug with one of the CNVS mixins where it's grabbing the wrong variable (here's the JIRA). Until that bug is fixed, we'll need the fix in this PR.

Cool, let's 🐑  it

LGTM! 💯  💖


Remove redefined variable in same scope (cascaded shadow mapping sample)

The variable i is re-defined. While this compiles fine, it reduces code clarity.

Thanks for your PR. Very much appreciated.


Update main.go change check NodeName

mistake: NodeName check Hostname exists

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

@Uburro please sign the CLA so we can merge this in! Also, how'd you find this! :o


[BarChartCard] Bar Chart Card throws propTypes error in Edit Mode

What package is this for?

[x] React
[ ] Angular

Describe the bug
When the BarChartCard is in edit mode, it throws an error while it doesn't have a categoryDataSourceId or timeDataSourceId set.

To Reproduce
Add a bar chart to the dashboardeditor and check the console.log

There is no work around but since dashboard editor is in experimental I have given a SEV 2


2016 Christmas is on Sunday

and 12/26/2016 (Monday) is a holiday in observation of X'mas. workalendar 1.0.0 as of now still doesn't correctly identify that. thanks

@shadowleaves do you know for which countries? It is not the case in France for instance.

for the United States, Germany, Italy, Dec 26th 2016 is a holiday observing X'mas
for UK, Dec 27th 2016 is a holiday (26th is Boxing day, 27th is observing X'mas)
i'll add more as I find out...

For the USA, it's covered by this class. The thing is that every State has its own rules, can you please provide a State use-case where this "26th december" is missing?
For Germany, it's handled via this variable in the core Germany calendar: https://github.com/novafloss/workalendar/blob/master/workalendar/europe/germany.py#L18 ; every Länder has this day as a holiday,
Same for Italy: https://github.com/novafloss/workalendar/blob/master/workalendar/europe/italy.py#L18
In UK also, including a complex (but robust) function to compute the Boxing day/ XMas day shift: https://github.com/novafloss/workalendar/blob/master/workalendar/europe/united_kingdom.py#L38-L47

So, correct me if I'm wrong: in which calendar did you happen to find a bug?

@brunobord
version 1.0.0 of workalendar:
`
from workalendar.usa import UnitedStates
from datetime import datetime
cal=UnitedStates()
print cal.is_holiday(datetime(2016,12,26))
`
this will give a False output, where as Dec 26th 2016 is indeed a federal holiday (observing X'mas)

@shadowleaves ah, there you have one! something interesting to look after ; thanks a lot!
/me dives in debugging mode

quick question: according to wikipedia, I see that

When a holiday occurs on Saturday or Sunday, that holiday is shifted to either Friday or Monday.
-- https://en.wikipedia.org/wiki/Public_holidays_in_the_United_States

But, in some states, it looks like it's not a rule set in stone:

Michigan: December 24 - Christmas Eve (if Christmas Eve falls on Sunday as it does in 2017, December 22 is the observed holiday)

or

West Virginia: Note: Christmas Eve and New Years Eve are half day holidays and are not shifted if they fall on Saturday or Sunday.

I think the bug is a bit bigger than I first thought about, and we may need to completely revamp the usa.py module and its tests.
Again, thank you for the report ; we'll try to work on it as quick as we can (although it will probably take some time).

Christmas Eve is not a Federal holiday and thus each state might have different rules. but the issue is not Christmas Eve here. This bug concerns the Christmas Day (12/25), which is a U.S. Federal holiday, and it falls on Sunday in 2016, and the following Monday (12/26) is made a holiday, and all states in the US observe that.

@shadowleaves you're right... but my point here is that every "fixed" day in the USA may be shifted a day before or a day after ; or maybe not shifted in some states, etc.
The good news here is that, a few years after my first pass on the USA public holidays, the wikipedia page has been extensively improved, and it'll help a lot to fix this ugly bug.
(always look on the bright side of life -whistle- )

closing, since workalendar 2.0.0 is now available via PyPI: https://pypi.python.org/pypi/workalendar/2.0.0
enjoy!


!reddit command doesn’t filter nsfw subreddits.

So yeah, as the title says !reddit command doesn’t filter nsfw subreddits ._.
doing: !reddit top nsfw displays the direct URL link to the nsfw subreddit.

this should be a simple fix as done here
https://github.com/python-discord/seasonalbot/blob/master/bot/exts/evergreen/reddit.py#L57
it's another Reddit command, but for seasonalbot

Nice. Hopefully they implement this 👍

We should keep this open until it is implemented.

I would like to finish this

@RohanJnr I've assigned the issue to you

thanks


Update handler to follow best practices

It would be really cool if relay.Handler can be updated to support the best practices outlined here: http://graphql.org/learn/serving-over-http/
For example, it would be nice to support both GET and POST and deal with different Content-Types.
I think the handler from graphql-go can be used as a reference as it is pretty complete: https://github.com/graphql-go/handler/blob/master/handler.go

The relay package is meant as a backend for Relay, which only needs the functionality currently implemented. However, I see that it is likely used as a starting point for a GraphQL HTTP endpoint. I'm willing to consider adding those best practices, since they are official enough. I'd just like to first know some real world example on how those additional ways are going to be used. What made you ask for this? :)

One technique that I am using that is baked into apollo client (popular js graphql client) is query batching.
TLDR; My graphql endpoint accepts a query or an array of queries. When an array of queries is received, we return an array of responses.
My handler looks something like this:
type GraphqlHandler struct {
	Schema *graphql.Schema
	pretty bool
}

type RequestOptions struct {
	Query         string                 `json:"query"`
	Variables     map[string]interface{} `json:"variables"`
	OperationName string                 `json:"operationName"`
}

func (h *GraphqlHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
	var output interface{}
	var b []byte
	var responseJSON []byte
	var err error

	b, err = ioutil.ReadAll(r.Body)
	if err != nil {
		http.Error(w, err.Error(), http.StatusInternalServerError)
		return
	}

	if bytes.HasPrefix(b, []byte("[")) {
		var responses []*graphql.Response
		var queries []*RequestOptions
		json.Unmarshal(b, &queries)
		for i := range queries {
			responses = append(responses, h.Schema.Exec(r.Context(), queries[i].Query, queries[i].OperationName, queries[i].Variables))
		}
		output = responses
	} else {
		var query RequestOptions
		json.Unmarshal(b, &query)
		output = h.Schema.Exec(r.Context(), query.Query, query.OperationName, query.Variables)
	}

	if h.pretty {
		responseJSON, err = json.MarshalIndent(output, "", "  ")
	} else {
		responseJSON, err = json.Marshal(output)
	}

	if err != nil {
		http.Error(w, err.Error(), http.StatusInternalServerError)
		return
	}

	w.Write(responseJSON)
}

Query batching will not become part of the relay package until Relay officially supports it. But why don't you release an apollo package? ;-)

Are you suggesting that I add a new package in this repo or a new repo all together? I'm happy to contribute either way.

Let's have a new repo. We can add a link to the readme. The relay package may also go into a new repo at some point.

@neelance Initially I was looking at the graphql-go/graphql package, but it seems to be somewhat unmaintained. In my case, I would like to build a few graphql services for a few simple internal APIs and don't really need the extra functionality provided by Relay and having an official handler would make it really easy to start up a graphql server 😄

@neelance here is my apollo handler: https://github.com/nicksrandall/apollo-go/blob/master/handler.go if you want to link to it?

@F21 Is @nicksrandall's project what you are looking for?

@neelance Yes, pretty much! @nicksrandall would you guys be interested in moving the handler into this project?

@F21 we discussed that earlier in this thread. @neelance thought it would be better in it's own package.

Ah I see. The reason I asked was that the relay package in this repo has a handler, so if we can compose it with your handler, the relay handler will get access to those best practices for free.

The changes @nicksrandall has made break the example graphiql server because it doesn't support the "text/plain" encoding.
I was fine with the relay handler, but it doesn't handle option requests gracefully which is causing my apollo-client code to error. I could simply wrap it to fix the problem, but I think it'd be better to improve either one of the handlers to handle options/head/etc. methods properly.
Thoughts?

If you can show me where "text/plain" is officially supported, then I will add it.

Well, while my main issues aren't "text/plain", and I don't think I've seen it officially supported anywhere, this graphiql client [0] (using version 0.7.8, current being 0.8) does send "text/plain" for it's initial request.
My issues had more to do with handling CORS requests [1]. I can make this another issue if @neelance wants since I think it's looking to be a bit more off-topic than I thought it'd be
(0): https://github.com/neelance/graphql-go/blob/8f7d2b1efd9e96e423c0dc0ecf7dbc905e1b5ff0/example/starwars/server/server.go
(1): https://fetch.spec.whatwg.org/#cors-preflight-fetch

Having understood the problem better, I think this isn't related to your handlers. Probably better to handle myself than make either handlers worry about this.

I'm still not convinced that the relay handler needs more than Relay actually uses. Closing for now, but I'm still open to discussion.

To begin with: thanks for a fantastic package.
Is it possible to provide for a functionality in relay.Handler to set additional custom headers? One use case is CORS. Let's say one wants to set some custom headers while sending an HTTP response. Wrapping relay.Handler and setting the headers in the wrapper will not work -- since the request body is being read in ServeHTTP, and setting the headers in the wrapper throws the error ""http: invalid Read on closed Body".
The solution to write a custom version of ServeHTTP with support for adding custom headers, but I was wondering if you think it's a feature that makes sense in relay.Handler.
Would be interested in knowing your thoughts on this. Thanks.

This is the way I do it now.
s, err := schema.ResolvedSchema()
	if err != nil {
		panic(err)
	}

http.Handle("/graphql", NewGraphqlHandler(s))

type Handler struct {
	Schema *graphql.Schema
}

// NewGraphqlHandler creates an new GraphQL API HTTP handler with the specified graphql schema
func NewGraphqlHandler(s *graphql.Schema) *Handler {
	return &Handler{Schema: s}
}

func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
	// dump, err := httputil.DumpRequest(r, true)
	// if err != nil {
	// 	http.Error(w, fmt.Sprint(err), http.StatusInternalServerError)
	// 	return
	// }
	// fmt.Printf("%s", dump)

	if origin := r.Header.Get("Origin"); origin != "" {
		w.Header().Set("Access-Control-Allow-Origin", origin)
	}
	w.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, HEAD")

	if r.Method == http.MethodOptions {
		w.Header().Set("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization")
		return
	}
	w.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding")

	var params struct {
		Query         string                 `json:"query"`
		OperationName string                 `json:"operationName"`
		Variables     map[string]interface{} `json:"variables"`
	}
	if err := json.NewDecoder(r.Body).Decode(&params); err != nil {
		http.Error(w, err.Error(), http.StatusBadRequest)
		return
	}

    ......
    ......

    response := h.Schema.Exec(ctx, params.Query, params.OperationName, params.Variables)
	responseJSON, err := json.Marshal(response)
	if err != nil {
		http.Error(w, err.Error(), http.StatusInternalServerError)
		return
	}

	w.Write(responseJSON)
}

Yes, thanks for the suggestion. I am doing something in my own code as well.


Adding the google analytics ID

@philippjfr @jlstevens
I added the Google Analytics ID to the conf.py file.

Merging; test failures are presumably unrelated. Not sure why the theme update is in this PR, but it does need to be done.


How do use Custom Response Filtering and cache based on the response.json()?

https://requests-cache.readthedocs.io/en/latest/advanced_usage.html#id6
I love this I can't seem to get the custom filtering to work.  I kinda replicated your example, but the response passed into the filter_by_size function is actually a PreparedRequest type and doesn't seem to have response.content I'm getting {AttributeError}'PreparedRequest' object has no attribute 'content'
  requests_cache.install_cache('dev_cache',
                                 allowable_methods=('GET', 'HEAD', 'POST'),
                                 allowable_codes=(200, 201),
                                 filter_fn=filter_in_progress
                                 )

naively I thought I might be able to do something like check response.json() and decide whether to cache based on that, but now I'm not sure.

naively I thought I might be able to do something like check response.json() and decide whether to cache based on that, but now I'm not sure.

That's not a naive assumption, that's pretty much exactly what filter_fn is supposed to do. This looks like a regression bug. Not sure how that one got past the tests!
Thanks for reporting, I will try to get a patch out for this soon.

@harvey251 Done. Update to 0.6.4 and let me know if that works for you.

Wow that was quick, thank you so much. It's working perfectly

Great! Let me know if you run into any more issues.


No Client Secret in the UI for Trade Desk Integration

Issue in ./help/destinations/catalog/advertising/tradedesk.md
At the following URL:
https://experienceleague.adobe.com/docs/experience-platform/destinations/catalog/advertising/tradedesk.html#activate-segments
The help portal says to enter "Client Secret: The clientSecret parameter used in the OAuth2 client credentials." to setup this destination. But there is no option to enter client secret in the AEP Trade Desk Destination UI.

Can you please update the same to provide the correct guidelines.

@sahjain - thank you for reporting this. We're tracking the issue internally in https://jira.corp.adobe.com/browse/PLAT-86911 and will update the documentation shortly.

We confirmed with engineering that client secret is not needed and removed this part from the documentation:
Client Secret: The clientSecret parameter used in the OAuth2 client credentials.
Closing the issue, thanks again for reporting it.


Fix for directory update in Duktape

Updates the Duktape docker container build process, due to changes in the directory structure of that project.

Just did a cleanup (removed extraneous sudo), and rebase, so this should be good to go.


Consider Removing Java JS Execution Module

The current source contains a Java module that wraps the javascript execution using Java Rhino.  This was originally done as a proof-of-concept, but never went beyond that for a variety of reasons.
I'd like to propose we remove that module for the following reasons:

there is now a native Java solution at DBCG/cql_engine
the Rhino-based solution is no longer maintained and has broken tests
there are likely better approaches to wrapping JS in Java now anyway, so even as a proof-of-concept, this is now behind the times and not the recommended approach.

@brynrhodes: What do you think?

@cmoesel: Agreed, it should be removed if it's out of date. Is that maybe the reason for the failing tests on Windows machines?

@brynrhodes : Now that you've merged it... did it fix the issue you reported regarding failing tests?  I wasn't sure if these were the same ones or not...

Yes, it did, those were exactly the ones that failed.


Excel export: xlsxwriter doesn't support Django JSON fields

TypeError: Unsupported type <class 'dict'> in write()
(9 additional frame(s) were not displayed)
...
  File "explorer/views.py", line 117, in download_from_sql
    return _export(request, query)
  File "explorer/views.py", line 94, in _export
    output = exporter.get_output(delim=delim)
  File "explorer/exporters.py", line 33, in get_output
    return str(self.get_file_output(**kwargs).getvalue())
  File "explorer/exporters.py", line 38, in get_file_output
    return self._get_output(res, **kwargs)
  File "explorer/exporters.py", line 130, in _get_output
    ws.write(row, col, data)

TypeError: float() argument must be a string or a number, not 'dict'
  File "xlsxwriter/worksheet.py", line 426, in write
    f = float(token)

Hey @ndanielsen, what is the expected behavior here? Should it write out a json.dumps() version of the JSON field?

@grantmcconnaughey hi grant, yes - having a json dump would be the desired behavior.


Invalid metric reported on the transmit side and missing metric on the receiving service side

Hi
I was running a test with 10 load generator instances sending HTTP requests to 10 ACME frontend service instances (https://github.com/vmwarecloudadvocacy/acme_fitness_demo). The load generator instance N sends requests to frontend instance N, using a one to one relation.
The test was performed o a 14 nodes AKS Kubernetes cluster using Grafana Beyla 1.6.4 release.
Important note: the Grafana Beyla daemon set was deployed after the applications and the load generators was ready and sending requests.
I found two issue that may be related:

On the node (6) where the load generator instance 6 was running for the http_server_request_duration_seconds family I had one unexpected metric having "k8s_deployment_name" label, "service_name" and the 'client_address' label equal to the "loadgenerator-6". Basically a flow receiving all the data sent by the traffic generator was reported as been received by the traffic generator instance 6.
This issue was seen several times including in one basic deployment with a single load generator instance and one single destination microservice. The issue is intermittent and seems to be seen only if the Grafana Beyla eBPF agent is started in a cluster where the traffic (HTTP requests) are already flowing.

On the node (14) where the frontend service was running, receiving about 10 HTTP requests per second, for the http_server_request_duration_seconds family no metric with "k8s_deployment_name" and ""service_name" labels equal to "frontend-6" and the 'client_address' equal to "loadgenerator-6" is found. This is unexpected as the HTTP requests was reported as successfully processed on the "loadgenerator-6" instance.

The next steps was performed to understand the issue behavior:

Delete the "loadgenerator-6" instance POD, wait to be recreated and send requests. The "loadgenerator-6" was scheduled on another cluster node. Both issues are remaining present.
Delete the "frontend-6" instance POD, wait to be recreated and operational.  The "frontend-6" POD was scheduled on another cluster node. At this moment both issues disappeared.

I think the issue is related to the first packet identification for a flow, and seems a response packet was selected to build a flow session, but I have no strong evidence to confirm this hypothesis.
I will try to find a easy and more predictable way to reproduce the issues and do further investigations.
Please let me know if such issues are known and if such issues was fixed after the release 1.6.4.
Please see below a simple diagram presenting the issues.

Best Regards
Corneliu

Thanks so much for reporting this @corneliu-calciu ! I believe we fixed number of these issues in our main branch, 1.7.0 is imminent I think, so I expect it will happen this week. If you are able to try the beyla:main branch that would be great, if not 1.7.0 should come very soon.

Hi Nikola
I did run the test against beyla main version of the container and the second issue, related to missing flows is still present.
The flow from load-generator-4 to frontend-4 was missing on the server side metrics http_server_request_duration_seconds_count family, but present on the client side http_client_request_duration_seconds_count metrics.
Client side
Verified on the node where “smartscaler-load-gen-acme-4” is running

http_client_request_duration_seconds_count{http_request_method="GET", http_response_status_code="200", http_route="/**", instance="localhost:8999", job="beylaremote", k8s_deployment_name="smartscaler-load-gen-acme-4", k8s_namespace_name="acme", k8s_node_name="ip-10-0-14-188.ec2.internal", k8s_pod_name="smartscaler-load-gen-acme-4-85f77698fb-shwsk", k8s_pod_start_time="2024-07-23 19:08:26 +0000 UTC", k8s_pod_uid="288f3690-ebc9-4491-8e6d-4be72ea775cd", k8s_replicaset_name="smartscaler-load-gen-acme-4-85f77698fb", server_address="frontend-acme-4", server_port="3000", service_name="smartscaler-load-gen-acme-4", service_namespace="acme", url_path="/products"}
33038  << Correct
Server side
Verified on the node where “frontend-acme-4” is running.

Relax the query and specify only the client_address="smartscaler-load-gen-acme-4"

http_server_request_duration_seconds_count{client_address="smartscaler-load-gen-acme-4", http_request_method="GET", http_response_status_code="200", http_route="/", instance="localhost:8999", job="beylaremote", k8s_deployment_name="catalog-acme-0", k8s_namespace_name="acme", k8s_node_name="ip-10-0-6-123.ec2.internal", k8s_pod_name="catalog-acme-0-8666f949bf-926zb", k8s_pod_start_time="2024-07-24 03:07:08 +0000 UTC", k8s_pod_uid="d8374dff-882a-4113-b174-e31e4db1377a", k8s_replicaset_name="catalog-acme-0-8666f949bf", server_address="frontend-acme-4", server_port="15006", service_name="catalog-acme-0", service_namespace="acme", url_path="/products"}	1
http_server_request_duration_seconds_count{client_address="smartscaler-load-gen-acme-4", http_request_method="GET", http_response_status_code="200", http_route="/", instance="localhost:8999", job="beylaremote", k8s_deployment_name="frontend-acme-9", k8s_namespace_name="acme", k8s_node_name="ip-10-0-6-123.ec2.internal", k8s_pod_name="frontend-acme-9-68ddb6ff8d-sff9t", k8s_pod_start_time="2024-07-23 19:07:29 +0000 UTC", k8s_pod_uid="b44c8a9d-fc8d-445f-a34c-0f46fe5aa1ad", k8s_replicaset_name="frontend-acme-9-68ddb6ff8d", server_address="frontend-acme-4", server_port="15006", service_name="frontend-acme-9", service_namespace="acme", url_path="/products"}
No entry with server_address="frontend-acme-4" and k8s_deployment_name ="frontend-acme-4" is found, but two other stray entries are present having the counter value of 1 and 2.
The server_address="frontend-acme-4" but the k8s_deployment_name is "frontend-acme-9" or is "catalog-acme-0".
The server_address and  the k8s_deployment_name  values are inconsistent.
Please let me know if is possible to enable at runtime the print_traces: true to inspect the samples sent to userspace. I was able to reproduce the issue but the configuration was having the print_traces disabled and now I cannot do any effective troubleshooting.
Please let me know if I can collect other information's that can help to isolate the root cause of this intermittent issue.
Best Regards
Corneliu

Thanks again @corneliu-calciu !
I think the issue is that we are not instrumenting the server application correctly. It's marked in the DEMO as a Go service, which makes me think it's one of the two reasons:

It's using a server framework we don't support yet, like go fibers.
It's using an old Go version, prior to 1.17 which we don't support properly.

I was unable to find the source for these services. Do you know if they have published any?
One way to investigate this further would be to set BEYLA_LOG_LEVEL=debug as environment variable, this would tell us what we instrumented and what we could find, it will be in the first 200 lines of the Beyla log.

Hi Nikola
Please see the diagram here: https://github.com/vmwarecloudadvocacy/acme_fitness_demo/blob/master/acmeshop.png, the front-end service is described as a NodeJS application. Unfortunately I don't have the information's where the source code for these services are available. I will continue the research on this path.
I will use your advice and set BEYLA_LOG_LEVEL=debug and try to reproduce again the issue to collect more data.
Thanks for the support!
Corneliu

Hi Nikola
Please find attached the logs while using BEYLA_LOG_LEVEL=DEBUG. The issue was not reproduced but may give you some information's.
I was reproducing the issue having ISTIO service mesh installed and enabled for the namespace "acme" where I was performing the tests. I don't know if this environment may be the trigger of this intermittent condition. I will try to reproduce the issue without ISTIO sidecars in the next days.
Best Regards
Corneliu
beyla.log

Hi @corneliu-calciu,
I wasn't able to find the line in your log which mentions us instrumenting the catalog service, but I was able to run their example myself. I didn't try the k8s deployment, I tried their docker-compose after making the docker-compose example use the same images (:latest) as the k8s demo.
After I tried this, Beyla's output shows the problem:
time=2024-07-24T15:41:35.168-04:00 level=INFO msg="instrumenting process" component=discover.TraceAttacher cmd=/app/catalog pid=2505270
time=2024-07-24T15:41:35.168-04:00 level=WARN msg="Unsupported Go program detected, using generic instrumentation" component=discover.TraceAttacher error="finding instrumentation points: unsupported Go version: go1.13.6. Minimum supported version is 1.17"

The examples they have use a very old Go version which we don't support. Go officially supports the latest version - 2, so they are up to 1.20 latest supported. Beyla goes down to 1.17, but we can't do earlier than that.
When we encounter old Go version we resort to using the kernel level instrumentation, which can miss a lot of signals. The reason for this is because Go internally overlays the OS thread with virtual threads (goroutines) and it's not always possible for us to track the connection information, without explicit Go support.
So technically this is a current limitation.

Hi Nikola
Thank you very much for the explanation.
Best Regards
Corneliu

Hi Nikola
I did check on my side and the issue I have is with "frontend" service and this is NodeJS
From inside the frontend  the container run:
root@frontend-78d557cc6c-xsmxx:/app# cat /proc/25/cmdline
nodeapp.js
From Beyla logs:
time=2024-07-25T07:31:08.095Z level=INFO msg="new process for already instrumented executable" component=discover.TraceAttacher pid=136953 child=[] exec=/opt/bitnami/node/bin/node
Please let me know if for NodeJS applications are known limitations similar to the golang supported version.
The Kubernetes manifest to deploy only frontend:
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend
spec:
selector:
matchLabels:
app: frontend
replicas: 1
template:
metadata:
labels:
app: frontend
spec:
containers:
- name: frontend
image: gcr.io/vmwarecloudadvocacy/acmeshop-front-end:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 30000
env:
- name: FRONTEND_PORT
value: "3000"
- name: USERS_HOST
value: users-0
- name: CATALOG_HOST
value: catalog-0
- name: ORDER_HOST
value: order-0
- name: CART_HOST
value: cart-0
- name: USERS_PORT
value: "8083"
- name: CATALOG_PORT
value: "8082"
- name: CART_PORT
value: "5000"
- name: ORDER_PORT
value: "6000"
- name: JAEGER_AGENT_HOST
value: localhost
resources:
requests:
memory: "10Mi"
cpu: "10m"
limits:
memory: "200Mi"
cpu: "1000m"
restartPolicy: Always
Best Regards
Corneliu

Hi @corneliu-calciu, the nodejs application will not have these limitations.

The issue is no longer seen using release 1.7.0. Was related to high churn environment AKS where nodes are recycles every few hours.


Docs: Update UserGuide to have V2.0 features

This PR resolves #116.

Coverage decreased (-0.1%) to 92.78% when pulling 792cc2527f2b79b60311471096e687355f484608 on hanselblack:UserGuide into 9c45e17a3a9dfc6bf8962a0995fe73ebc5df79a7 on CS2103AUG2017-W11-B4:master.

Coverage decreased (-0.2%) to 92.708% when pulling 792cc2527f2b79b60311471096e687355f484608 on hanselblack:UserGuide into 9c45e17a3a9dfc6bf8962a0995fe73ebc5df79a7 on CS2103AUG2017-W11-B4:master.

Coverage remained the same at 92.888% when pulling 792cc2527f2b79b60311471096e687355f484608 on hanselblack:UserGuide into 9c45e17a3a9dfc6bf8962a0995fe73ebc5df79a7 on CS2103AUG2017-W11-B4:master.

Coverage decreased (-0.07%) to 92.816% when pulling f065f330b7778c94f1cc9747bd5d6791995b5d1c on hanselblack:UserGuide into 9c45e17a3a9dfc6bf8962a0995fe73ebc5df79a7 on CS2103AUG2017-W11-B4:master.