Migrations cannot be performed

After cloning the repository and creating a .env file with a CRM_DB_PASSWORD entry, running ./up.sh (modified to print the password value) gave the following unexpected result:
steveholden@thickhead company-relationship-manager % ./up.sh
CRM_DB_PASSWORD=some_secret_phrase
[+] Running 1/1
 ⠿ Container company-relationship-manager-db-1  Started                                                                                0.3s
[+] Running 1/0
 ⠿ Container company-relationship-manager-db-1  Running                                                                                0.0s
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 282, in ensure_connection
    self.connect()
  File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 263, in connect
    self.connection = self.get_new_connection(conn_params)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/backends/postgresql/base.py", line 215, in get_new_connection
    connection = Database.connect(**conn_params)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/psycopg2/__init__.py", line 122, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
psycopg2.OperationalError: FATAL:  password authentication failed for user "crm_db_user"

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/app/./crm/manage.py", line 22, in <module>
    main()
  File "/app/./crm/manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.11/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.11/site-packages/django/core/management/__init__.py", line 440, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python3.11/site-packages/django/core/management/base.py", line 402, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python3.11/site-packages/django/core/management/base.py", line 448, in execute
    output = self.handle(*args, **options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/core/management/base.py", line 96, in wrapped
    res = handle_func(*args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/core/management/commands/migrate.py", line 114, in handle
    executor = MigrationExecutor(connection, self.migration_progress_callback)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/migrations/executor.py", line 18, in __init__
    self.loader = MigrationLoader(self.connection)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/migrations/loader.py", line 58, in __init__
    self.build_graph()
  File "/usr/local/lib/python3.11/site-packages/django/db/migrations/loader.py", line 235, in build_graph
    self.applied_migrations = recorder.applied_migrations()
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/migrations/recorder.py", line 81, in applied_migrations
    if self.has_table():
       ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/migrations/recorder.py", line 57, in has_table
    with self.connection.cursor() as cursor:
         ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 323, in cursor
    return self._cursor()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 299, in _cursor
    self.ensure_connection()
  File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 281, in ensure_connection
    with self.wrap_database_errors:
  File "/usr/local/lib/python3.11/site-packages/django/db/utils.py", line 91, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 282, in ensure_connection
    self.connect()
  File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 263, in connect
    self.connection = self.get_new_connection(conn_params)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/db/backends/postgresql/base.py", line 215, in get_new_connection
    connection = Database.connect(**conn_params)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/psycopg2/__init__.py", line 122, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
django.db.utils.OperationalError: FATAL:  password authentication failed for user "crm_db_user"

[+] Running 2/0
 ⠿ Container company-relationship-manager-db-1   Running                                                                                0.0s
 ⠿ Container company-relationship-manager-api-1  Created                                                                                0.0s
Attaching to company-relationship-manager-api-1, company-relationship-manager-db-1
company-relationship-manager-api-1  | Watching for file changes with StatReloader
company-relationship-manager-api-1  | Performing system checks...
company-relationship-manager-api-1  |
company-relationship-manager-api-1  | System check identified no issues (0 silenced).
company-relationship-manager-db-1   | 2022-11-04 14:24:31.041 UTC [33] FATAL:  password authentication failed for user "crm_db_user"
company-relationship-manager-db-1   | 2022-11-04 14:24:31.041 UTC [33] DETAIL:  Connection matched pg_hba.conf line 100: "host all all all scram-sha-256"
company-relationship-manager-api-1  | Exception in thread django-main-thread:
company-relationship-manager-api-1  | Traceback (most recent call last):
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 282, in ensure_connection
company-relationship-manager-api-1  |     self.connect()
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
company-relationship-manager-api-1  |     return func(*args, **kwargs)
company-relationship-manager-api-1  |            ^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 263, in connect
company-relationship-manager-api-1  |     self.connection = self.get_new_connection(conn_params)
company-relationship-manager-api-1  |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
company-relationship-manager-api-1  |     return func(*args, **kwargs)
company-relationship-manager-api-1  |            ^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/postgresql/base.py", line 215, in get_new_connection
company-relationship-manager-api-1  |     connection = Database.connect(**conn_params)
company-relationship-manager-api-1  |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/psycopg2/__init__.py", line 122, in connect
company-relationship-manager-api-1  |     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
company-relationship-manager-api-1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  | psycopg2.OperationalError: FATAL:  password authentication failed for user "crm_db_user"
company-relationship-manager-api-1  |
company-relationship-manager-api-1  |
company-relationship-manager-api-1  | The above exception was the direct cause of the following exception:
company-relationship-manager-api-1  |
company-relationship-manager-api-1  | Traceback (most recent call last):
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/threading.py", line 1038, in _bootstrap_inner
company-relationship-manager-api-1  |     self.run()
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/threading.py", line 975, in run
company-relationship-manager-api-1  |     self._target(*self._args, **self._kwargs)
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/utils/autoreload.py", line 64, in wrapper
company-relationship-manager-api-1  |     fn(*args, **kwargs)
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/core/management/commands/runserver.py", line 137, in inner_run
company-relationship-manager-api-1  |     self.check_migrations()
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/core/management/base.py", line 564, in check_migrations
company-relationship-manager-api-1  |     executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
company-relationship-manager-api-1  |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/migrations/executor.py", line 18, in __init__
company-relationship-manager-api-1  |     self.loader = MigrationLoader(self.connection)
company-relationship-manager-api-1  |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/migrations/loader.py", line 58, in __init__
company-relationship-manager-api-1  |     self.build_graph()
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/migrations/loader.py", line 235, in build_graph
company-relationship-manager-api-1  |     self.applied_migrations = recorder.applied_migrations()
company-relationship-manager-api-1  |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/migrations/recorder.py", line 81, in applied_migrations
company-relationship-manager-api-1  |     if self.has_table():
company-relationship-manager-api-1  |        ^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/migrations/recorder.py", line 57, in has_table
company-relationship-manager-api-1  |     with self.connection.cursor() as cursor:
company-relationship-manager-api-1  |          ^^^^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
company-relationship-manager-api-1  |     return func(*args, **kwargs)
company-relationship-manager-api-1  |            ^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 323, in cursor
company-relationship-manager-api-1  |     return self._cursor()
company-relationship-manager-api-1  |            ^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 299, in _cursor
company-relationship-manager-api-1  |     self.ensure_connection()
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
company-relationship-manager-api-1  |     return func(*args, **kwargs)
company-relationship-manager-api-1  |            ^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 281, in ensure_connection
company-relationship-manager-api-1  |     with self.wrap_database_errors:
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/utils.py", line 91, in __exit__
company-relationship-manager-api-1  |     raise dj_exc_value.with_traceback(traceback) from exc_value
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 282, in ensure_connection
company-relationship-manager-api-1  |     self.connect()
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
company-relationship-manager-api-1  |     return func(*args, **kwargs)
company-relationship-manager-api-1  |            ^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 263, in connect
company-relationship-manager-api-1  |     self.connection = self.get_new_connection(conn_params)
company-relationship-manager-api-1  |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
company-relationship-manager-api-1  |     return func(*args, **kwargs)
company-relationship-manager-api-1  |            ^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/postgresql/base.py", line 215, in get_new_connection
company-relationship-manager-api-1  |     connection = Database.connect(**conn_params)
company-relationship-manager-api-1  |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/psycopg2/__init__.py", line 122, in connect
company-relationship-manager-api-1  |     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
company-relationship-manager-api-1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  | django.db.utils.OperationalError: FATAL:  password authentication failed for user "crm_db_user"
company-relationship-manager-api-1  |

Clearly not what was intended. What did I do wrong?

Sorry, I didn’t provide you with the password. My mistake.
Please can you change the .env file so that the password is ‘12345’ so your file looks like this:
CRM_DB_PASSWORD=12345
That should do the trick!
From: Steve Holden @.>
Date: Friday, 4 November 2022 at 14:33
To: hnryjmes/company-relationship-manager @.>
Cc: Subscribed @.***>
Subject: [EXT] [hnryjmes/company-relationship-manager] Migrations cannot be performed (Issue #1)
After cloning the repository and creating a .env file with a CRM_DB_PASSWORD entry, running ./up.sh gave the following unexpected result:
@.*** company-relationship-manager % ./up.sh
CRM_DB_PASSWORD=some_secret_phrase
[+] Running 1/1
⠿ Container company-relationship-manager-db-1  Started                                                                                0.3s
[+] Running 1/0
⠿ Container company-relationship-manager-db-1  Running                                                                                0.0s
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 282, in ensure_connection
self.connect()

File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)

       ^^^^^^^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 263, in connect
self.connection = self.get_new_connection(conn_params)

                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)

       ^^^^^^^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/django/db/backends/postgresql/base.py", line 215, in get_new_connection
connection = Database.connect(**conn_params)

             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/psycopg2/init.py", line 122, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)

       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

psycopg2.OperationalError: FATAL:  password authentication failed for user "crm_db_user"
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/app/./crm/manage.py", line 22, in
main()

File "/app/./crm/manage.py", line 18, in main
execute_from_command_line(sys.argv)

File "/usr/local/lib/python3.11/site-packages/django/core/management/init.py", line 446, in execute_from_command_line
utility.execute()

File "/usr/local/lib/python3.11/site-packages/django/core/management/init.py", line 440, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)

File "/usr/local/lib/python3.11/site-packages/django/core/management/base.py", line 402, in run_from_argv
self.execute(*args, **cmd_options)

File "/usr/local/lib/python3.11/site-packages/django/core/management/base.py", line 448, in execute
output = self.handle(*args, **options)

         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/django/core/management/base.py", line 96, in wrapped
res = handle_func(*args, **kwargs)

      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/django/core/management/commands/migrate.py", line 114, in handle
executor = MigrationExecutor(connection, self.migration_progress_callback)

           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/django/db/migrations/executor.py", line 18, in init
self.loader = MigrationLoader(self.connection)

              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/django/db/migrations/loader.py", line 58, in init
self.build_graph()

File "/usr/local/lib/python3.11/site-packages/django/db/migrations/loader.py", line 235, in build_graph
self.applied_migrations = recorder.applied_migrations()

                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/django/db/migrations/recorder.py", line 81, in applied_migrations
if self.has_table():

   ^^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/django/db/migrations/recorder.py", line 57, in has_table
with self.connection.cursor() as cursor:

     ^^^^^^^^^^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)

       ^^^^^^^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 323, in cursor
return self._cursor()

       ^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 299, in _cursor
self.ensure_connection()

File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)

       ^^^^^^^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 281, in ensure_connection
with self.wrap_database_errors:

File "/usr/local/lib/python3.11/site-packages/django/db/utils.py", line 91, in exit
raise dj_exc_value.with_traceback(traceback) from exc_value

File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 282, in ensure_connection
self.connect()

File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)

       ^^^^^^^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 263, in connect
self.connection = self.get_new_connection(conn_params)

                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)

       ^^^^^^^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/django/db/backends/postgresql/base.py", line 215, in get_new_connection
connection = Database.connect(**conn_params)

             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/psycopg2/init.py", line 122, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)

       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

django.db.utils.OperationalError: FATAL:  password authentication failed for user "crm_db_user"
[+] Running 2/0
⠿ Container company-relationship-manager-db-1   Running                                                                                0.0s
⠿ Container company-relationship-manager-api-1  Created                                                                                0.0s
Attaching to company-relationship-manager-api-1, company-relationship-manager-db-1
company-relationship-manager-api-1  | Watching for file changes with StatReloader
company-relationship-manager-api-1  | Performing system checks...
company-relationship-manager-api-1  |
company-relationship-manager-api-1  | System check identified no issues (0 silenced).
company-relationship-manager-db-1   | 2022-11-04 14:24:31.041 UTC [33] FATAL:  password authentication failed for user "crm_db_user"
company-relationship-manager-db-1   | 2022-11-04 14:24:31.041 UTC [33] DETAIL:  Connection matched pg_hba.conf line 100: "host all all all scram-sha-256"
company-relationship-manager-api-1  | Exception in thread django-main-thread:
company-relationship-manager-api-1  | Traceback (most recent call last):
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 282, in ensure_connection
company-relationship-manager-api-1  |     self.connect()
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
company-relationship-manager-api-1  |     return func(*args, **kwargs)
company-relationship-manager-api-1  |            ^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 263, in connect
company-relationship-manager-api-1  |     self.connection = self.get_new_connection(conn_params)
company-relationship-manager-api-1  |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
company-relationship-manager-api-1  |     return func(*args, **kwargs)
company-relationship-manager-api-1  |            ^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/postgresql/base.py", line 215, in get_new_connection
company-relationship-manager-api-1  |     connection = Database.connect(**conn_params)
company-relationship-manager-api-1  |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/psycopg2/init.py", line 122, in connect
company-relationship-manager-api-1  |     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
company-relationship-manager-api-1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  | psycopg2.OperationalError: FATAL:  password authentication failed for user "crm_db_user"
company-relationship-manager-api-1  |
company-relationship-manager-api-1  |
company-relationship-manager-api-1  | The above exception was the direct cause of the following exception:
company-relationship-manager-api-1  |
company-relationship-manager-api-1  | Traceback (most recent call last):
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/threading.py", line 1038, in _bootstrap_inner
company-relationship-manager-api-1  |     self.run()
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/threading.py", line 975, in run
company-relationship-manager-api-1  |     self._target(*self._args, **self._kwargs)
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/utils/autoreload.py", line 64, in wrapper
company-relationship-manager-api-1  |     fn(*args, **kwargs)
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/core/management/commands/runserver.py", line 137, in inner_run
company-relationship-manager-api-1  |     self.check_migrations()
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/core/management/base.py", line 564, in check_migrations
company-relationship-manager-api-1  |     executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
company-relationship-manager-api-1  |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/migrations/executor.py", line 18, in init
company-relationship-manager-api-1  |     self.loader = MigrationLoader(self.connection)
company-relationship-manager-api-1  |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/migrations/loader.py", line 58, in init
company-relationship-manager-api-1  |     self.build_graph()
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/migrations/loader.py", line 235, in build_graph
company-relationship-manager-api-1  |     self.applied_migrations = recorder.applied_migrations()
company-relationship-manager-api-1  |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/migrations/recorder.py", line 81, in applied_migrations
company-relationship-manager-api-1  |     if self.has_table():
company-relationship-manager-api-1  |        ^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/migrations/recorder.py", line 57, in has_table
company-relationship-manager-api-1  |     with self.connection.cursor() as cursor:
company-relationship-manager-api-1  |          ^^^^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
company-relationship-manager-api-1  |     return func(*args, **kwargs)
company-relationship-manager-api-1  |            ^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 323, in cursor
company-relationship-manager-api-1  |     return self._cursor()
company-relationship-manager-api-1  |            ^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 299, in _cursor
company-relationship-manager-api-1  |     self.ensure_connection()
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
company-relationship-manager-api-1  |     return func(*args, **kwargs)
company-relationship-manager-api-1  |            ^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 281, in ensure_connection
company-relationship-manager-api-1  |     with self.wrap_database_errors:
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/utils.py", line 91, in exit
company-relationship-manager-api-1  |     raise dj_exc_value.with_traceback(traceback) from exc_value
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 282, in ensure_connection
company-relationship-manager-api-1  |     self.connect()
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
company-relationship-manager-api-1  |     return func(*args, **kwargs)
company-relationship-manager-api-1  |            ^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 263, in connect
company-relationship-manager-api-1  |     self.connection = self.get_new_connection(conn_params)
company-relationship-manager-api-1  |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
company-relationship-manager-api-1  |     return func(*args, **kwargs)
company-relationship-manager-api-1  |            ^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/django/db/backends/postgresql/base.py", line 215, in get_new_connection
company-relationship-manager-api-1  |     connection = Database.connect(**conn_params)
company-relationship-manager-api-1  |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/psycopg2/init.py", line 122, in connect
company-relationship-manager-api-1  |     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
company-relationship-manager-api-1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  | django.db.utils.OperationalError: FATAL:  password authentication failed for user "crm_db_user"
company-relationship-manager-api-1  |
Clearly not what was intended. What did I do wrong?
—
Reply to this email directly, view it on GitHubhttps://secure-web.cisco.com/1ZvrHiEMzNfXcwBt2NsLLnPJ8KmfQXPoUxcl4QXm4lZRTB1APZQI7UNp_t0GApiYz5sS5Tooet-VqFWK_feQXH07BL5PjukMScrhid5LpxbBiDjatSwq-UoE9WVCnP7cwchkz8aBlMndbISGgG1BmTTFIHcd3KIgcaeE2tWOa5JtewudzIjZYqBc2OA4trumi77ojKFC1qS6-9i5ZUzXbR7WsWL4zn2PhoXBK5lMRYr37pALvzIhjowpR1Kfuf3SdcpWH21ZgJkH2UNDPmVvNdvpXfyLgsGiooeNMNZww6CBzYzANAuIs1mcnOZvFBquv/https%3A%2F%2Fgithub.com%2Fhnryjmes%2Fcompany-relationship-manager%2Fissues%2F1, or unsubscribehttps://secure-web.cisco.com/1F-T32mqbOSPMn1NER1gpoiQXG9TFy98n_CM8XUsPbw3FboO36Owd6T2nPGJUsF86Lmx5rKGMhLZx5HbKz6HqJuzTyqVVb19n3RKaInYu8JzFJVlrdJRvpk6sBZ_-T9dJDWYDUI10_7AoeFE27e14G1zoxs_8yUQHqlTg4oxZM4QCTeoMLaiP6nbZh5EJbU18W6esq78SJ5RiVTfGm34V-FU5WK4b-USdQRO5OurRmVZorgSRfaoV_gzX78ZBMoi9Z0b11tVMiXQLguSpUdcPz3t1qi2n34KZaPEBxjzsLwFXLuOVMIn538A6BRejlRp-/https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAJOJGO3KUO5J6EVPRWIYENDWGUM6TANCNFSM6AAAAAARXHVLDY.
You are receiving this because you are subscribed to this thread.Message ID: @.***>
IMPORTANT NOTICE
This communication is from Deloitte LLP, a limited liability partnership registered in England and Wales with registered number OC303675. Its registered office is 1 New Street Square, London EC4A 3HQ, United Kingdom. Deloitte LLP is the United Kingdom affiliate of Deloitte NSE LLP, a member firm of Deloitte Touche Tohmatsu Limited, a UK private company limited by guarantee (“DTTL”). DTTL and each of its member firms are legally separate and independent entities. DTTL and Deloitte NSE LLP do not provide services to clients. Please see www.deloitte.co.uk/abouthttps://www.deloitte.co.uk/about to learn more about our global network of member firms. For details of our professional regulation please see Regulatorshttps://www2.deloitte.com/uk/en/footerlinks1/regulators-and-provision-service-regulations.html.
This communication contains information which is confidential and may also be privileged. It is for the exclusive use of the intended recipient(s). If you are not the intended recipient(s), please notify<EMAIL_ADDRESS>and destroy this message immediately. Email communications cannot be guaranteed to be secure or free from error or viruses. All emails sent to or from a @deloitte.co.uk email account are securely archived and stored by an external supplier within the European Union.
You can understand more about how we collect and use (process) your personal information in our Privacy Noticehttps://www2.deloitte.com/uk/en/legal/privacy.html.
Deloitte LLP does not accept any liability for use of or reliance on the contents of this email by any person save by the intended recipient(s) to the extent agreed in a Deloitte LLP engagement contract.
Opinions, conclusions and other information in this email which have not been delivered by way of the business of Deloitte LLP are neither given nor endorsed by it.

'Fraid it didn't:
steveholden@thickhead company-relationship-manager % ./up.sh
CRM_DB_PASSWORD=12345
[+] Running 1/1
 ⠿ Container company-relationship-manager-db-1  Started                                                                                0.4s
[+] Running 1/0
 ⠿ Container company-relationship-manager-db-1  Running                                                                                0.0s
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/django/db/backends/base/base.py", line 282, in ensure_connection
    self.connect()
  File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
    ...
company-relationship-manager-api-1  |   File "/usr/local/lib/python3.11/site-packages/psycopg2/__init__.py", line 122, in connect
company-relationship-manager-api-1  |     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
company-relationship-manager-api-1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
company-relationship-manager-api-1  | django.db.utils.OperationalError: FATAL:  password authentication failed for user "crm_db_user"

I might look at removing the database authentication altogether given this is just an example project, so devs can focus on other things - will let you know when I have an update!

@holdenweb this has now been completed - please check the main branch and pull the latest if you would like to try it out without the database authentication. please also let me know if you experience any trouble with it, as I am happy to make more changes

Without the database authentication it works, but isn't this working around the symptom? How are Deloitte staffers going to handle making their systems authenticate to services?

I was in the middle of a review. Or do we just commit to main whenever it "works on my machine"?
The fix you have implemented only works by accident. Using anything but a string as a Postgres password is asking for trouble.
As far as passing code into Django from the environment goes, you might be interested in the environ package, which has many advantages over just hacking environment variables yourself.

To your first point, yes it is working around the symptom. Ideally I'd like to have this be a realistic DIT-like service, which means using secrets and authentication in a realistic way, even though it is only a dummy application.

To your other points:
At the moment, it being a personal project, I'm not in any code review / approval relation with anyone as I am working by myself. As soon as I have collaborators, or if this repo were to move to a different organisation, I can change that. At the moment please consider this as if I'm showing you a personal project that I and only I am working on.
Noted.
Thanks, I will have a look at environ. I was using python-dotenv but if python-environ is the recommended tool, I am happy to use that instead. I wouldn't be interested in hacking environment variables myself as you suggest.

I will be happy to receive further comments from you, in the meantime I will also be working on using GitHub Actions and setting up a deployment

You may, depending on requirements, need a build environment and an execution environment. The build environment should include the tools required to build and test the code. It will probably require components that aren't needed during execution. How do you propose to deal with that?
Not sure that environ is any better than dotenv - I hadn't noticed that one, sorry. There are many uktrade projects using dotenv, so just ignore me and go ahead.
Yes, take your point about the personal project, and happy to cooperate on that basis as long as we remember the object of the exercise is to help establish a pipeline of suitably skilled team members.


Running Pylint does not recognized installed pylint

This issue has been moved from a ticket on Developer Community.

Pylint is installed in the custom python environment
! [image.png] (https://aka.ms/dc/image?name=Bd31daacbe3ac46ea96d442de01ae4027637819995121316000_20220304-150512-image.png&tid=d31daacbe3ac46ea96d442de01ae4027637819995121316000)
Executing Pylint via solution explorer/python/run pylint gives this error message:
! [image.png] (https://aka.ms/dc/image?name=B05da578405d34b3e9049c28d6373c425637819996273662675_20220304-150706-image.png&tid=05da578405d34b3e9049c28d6373c425637819996273662675)
"Run the command without installing the packages" executes pylint though. Selecting the install missing packages option makes no difference, eg pylint is executed but the next time the same error message is displayed.
Here is a link to an old item from VS2017 which asks to create a new report if the issues reappears.
https://developercommunity2.visualstudio.com/t/Run-PyLint-Does-Not-Recognize-That-Pylin/7246?entry=problem&ref=native&refTime=1646402481267&refUserId=734272ef-3767-60d0-bb9e-1351c55450de

Original Comments
Feedback Bot on 3/6/2022, 07:22 PM:
We have directed your feedback to the appropriate engineering team for further evaluation. The team will review the feedback and notify you about the next steps.

Original Solutions
(no solutions)

Hi, I was not able to repro this. I created a custom env with Pylint installed, but was able to execute it. Could you verify if your custom environment is activated? Thanks.

Going to close this out. If the issue still persists, please reopen with the information requested. Thanks.


Add Material 3 support for ListTile - Part 1

part of https://github.com/flutter/flutter/issues/114006
This PR does the following:

Add titleTextStyle,  subtitleTextStyle, and trailingAndLeadingTextStyle
Add M2 and M3 templates
Refactor ListTile properties logic.

Pre-launch Checklist

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I read the Tree Hygiene wiki page, which explains my responsibilities.
[x] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[x] I signed the CLA.
[x] I listed at least one issue that this PR fixes in the description above.
[x] I updated/added relevant documentation (doc comments with ///).
[x] I added new tests to check the change I am making, or this PR is test-exempt.
[x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

Appreciate the feedback! I'm working on it to make the changes based on the feedback.

cc: @darrenaustin

@TahaTesser  - I'm reverting this PR because https://github.com/flutter/flutter/pull/116194#pullrequestreview-1214148603
In addition to removed the assert, we'll need a regression test.


After the storage deletes the package and downloads the package again, the storage will not have a cache, only package.json

All of my configurations are initial. I changed cache to false halfway through, but now it's true. The package that was deleted in storage, download again, storage will not have cache, which makes me very distressed, whether there is a solution.

Sorry, after my verification
It's the local NPM cache. After clearing the local cache, everything goes well.
I will close this issue.


Implement Cold Character Animation

[x] Create Cold Character CPP
[x] Add Mesh
[x] Add Animation

https://github.com/SR-PLUM/SidheRigel/commit/783cd47cc4e38588b1fe678c6c7377b982c515cb


SolidJS component working locally but not on prod

I'm using Astro 1.0.1 and have created a site which has one component that is using SolidJS.
I installed all necessary dependencies (@astrojs/solid-js, solid-js, latest versions), added integrations: [solid()], to the config, and <MySolidComponent client:idle /> (also tried client:load) inside the Astro component which loads the SolidJS one.
Locally, SolidJS is being loaded and thus the component works. But on prod the page does not include any JS. Hope I'm not missing something obvious...

Closing because incidentally opened it in the docs repo


First set of 3.12. test failures on Mac OS

There are three changes; 1 for a classification method not available in previous sklearn versions,  1 for the timer comparison we spoke about and the final set of changes are for the changes in pandas.
Essentially , the changes to Pandas mean that merged objects the way we use them will always be sorted. I tried, and I couldn't find a way to recreate the type of merges we allow, for example, a union of all Points, that still followed the order of the 'left' (caller Base object). In order to prevent the need to modify merge implementation for Lists and Matrix objects, I have taken a decision I believe is best for backward compatibility and the latest changes to Pandas.
The solution now, is to sort all merged Base objects by the feature provided with the onFeature argument. This has meant reworking the two failing tests that meet the condition that allowed the resulting union of points to be sorted by the 'left' (caller).
Now I need help with the LogEntries decorator as that  seems to be the only thing failing my tests. The introduction of Points.sort() to the base.merge method means that the LogEntries goes up 1 number. I genuinlely think the only alternative to this approach is reworking merge implementations of List and Matrix, and reworking other tests to confirm.

In addition, despite being up to date with dev, im seeing some test failures that seem to have nothing to do with anything I remember. One if a truncated spelling of 'PopulationStandardDeviation'  which is associated with changes made to the new repr, but it doesn't check out in my pytest runs.

This is an overbroad solution because for point='strict' and point='left' I really think we don't want it to be sorted by the natural ordering of the values in the given feature. Since the number of points hasn't changed in those cases I think it would be very unintuitive for a user if the order changed at all. For point='intersection' I'm less sure if preserving the order has any value. For point='union' I do think this is probably an acceptable to thing to do since it helps us out.
It seems that the only test failures we were observing related to point='union' but I'm almost positive the tests aren't exhaustive (despite the vast number of them). Do you have any insight on what ordering looks like when doing point='intersection' for DataFrames and whether the sorting would be necessary there?

With point='intersection', the DataFrames (pandas) will be sorted according to the left / caller. Below is from Pandas documentation.
As documented, sort=True sorts the join keys lexicographically in the resulting [DataFrame](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html#pandas.DataFrame). With sort=False, the order of the join keys depends on the join type (how keyword):
how="left": preserve the order of the left keys
how="right": preserve the order of the right keys
how="inner": preserve the order of the left keys
how="outer": sort keys lexicographically


Request for clarification of change made in 2.9.7

Hello. I have code using promisify that has worked without issues since at least version 2.3.11, through 2.9.6. With 2.9.7 the code fails.
I want to be able pass require('bluebird').promisify to a library that will create promisified methods of standard node async methods (unbound functions that depend on this). FYI, the library in question is node-java, with the feature documented here. The feature was written to be workable with multiple Promises/A+ libraries. See the source file testHelpers.js to see (in comments) the various libraries that were tested. Most of the libraries (including bluebird) allowed me to pass a single promisify function and get valid results. Q was an exception, since the closest candidate function (denodify/nfbind) could only promisify a bound function, so I had to write a wrapper function promisifyQ show in testHelpers.js. It looks like that may now be necessary with bluebird.
Since this behavior change is recent, I want to ask for clarification. I see that Issue #470 may be the reason for the change in behavior, though that was specifically about promisifyAll, not promisify.

The change should not affect any existing code at all.

The change did affect my existing code, but my code arguably misused the API. The API documentation for Promise.promisify() clearly states:
Note that if the node function is a method of some object, you need to pass the object as the second argument ...
Despite this statement, I was able to pass unbound methods to promisify and get a valid promisified method. So, one way to look at this is that there has been a long-outstanding bug in which the implementation did not conform to the spec, and 2.9.7 fixes the bug. Another way to look at it is that the documentation was overly restrictive, and 2.9.7 inadvertently introduced an unnecessary change in a useful feature. Which way do you see it?

If you don't pass a second argument, the promisified method uses whatever this is to call the original function. There is no change to that in 2.9.7 and that still works the same.

Ok, it seems that I need to try to create a small test that reproduces the error I am now seeing. I see that your unit test 'when calling promisified function it should >  should use this if no receiver was given' that seems to be a good test for this, but there are some complexities to my particular case, including the fact that the promisification function is passed down into a node addon, so the actual call to promisify a method occurs in C++ code (lines 71-81 of https://github.com/joeferner/node-java/blob/master/src/javaObject.cpp).
But before doing that, I am trying to run your unit tests on my MacBook with Mac OS 10.10.2 using node 0.11.14. I'm not getting a clean run for the tests, and in fact I get this error:
Some tests failed:
promisify.js For additional details you can run it individually  with the command node tools/test --run=promisify.js
However, if I then run just promisify.js as suggested, it runs without errors. This behavior is repeatable. Every time I run all tests it fails, saying that promisify.js had the failures, but every time I run just promisfy.js, it succeeds (where 'every time' means ~5 times).
Perhaps the problem is somehow specific to my configuration. Do you test on a Mac?
FYI, when running all tests, I see many of these warnings:
Warning: .then() only accepts functions but was passed: [object Null], [object Array]
    at /Users/jim/dev/github/bluebird/test/mocha/3.2.6.js:305:45
    at Context.<anonymous> (/Users/jim/dev/github/bluebird/test/mocha/helpers/testThreeCases.js:59:23)
    at Test.Runnable.run (/Users/jim/dev/github/bluebird/node_modules/mocha/lib/runnable.js:218:15)
    at Runner.runTest (/Users/jim/dev/github/bluebird/node_modules/mocha/lib/runner.js:374:10)
    at /Users/jim/dev/github/bluebird/node_modules/mocha/lib/runner.js:452:12
    at next (/Users/jim/dev/github/bluebird/node_modules/mocha/lib/runner.js:299:14)
    at /Users/jim/dev/github/bluebird/node_modules/mocha/lib/runner.js:309:7
    at next (/Users/jim/dev/github/bluebird/node_modules/mocha/lib/runner.js:248:23)
    at Immediate._onImmediate (/Users/jim/dev/github/bluebird/node_modules/mocha/lib/runner.js:276:5)
    at processImmediate [as _immediateCallback] (timers.js:374:17)

And then these two errors:
Possibly unhandled AssertionError: false == true
    at assertLongStackTraces (/Users/jim/dev/github/bluebird/test/mocha/promisify.js:550:5)
    at /Users/jim/dev/github/bluebird/test/mocha/promisify.js:566:21
    at process._tickCallback (node.js:372:11)
Possibly unhandled AssertionError: false == true
    at assertLongStackTraces (/Users/jim/dev/github/bluebird/test/mocha/promisify.js:550:5)
    at /Users/jim/dev/github/bluebird/test/mocha/promisify.js:584:21
    at process._tickCallback (node.js:372:11)

The warning is ok and expected as it's the Promises/A+ test suite testing behavior when  .then is incorrectly called with non function values. In practice this warning helps people new to promises quickly see where they made a mistake.
I used 0.11.14 and it fails on ubuntu too. 0.11.16 is fine, so is 0.12 and iojs. But even on 0.11.14 that failure doesn't really affect anything other than long stack traces.

Interesting. I can confirm that your unit tests all pass when I use node 0.12 on my MacBook. Yet my test case in node-java is still failing. I'll investigate more.

@jimlloyd what is your java-test that fails? Can you also log out the generated code of the promisified function e.g.:
var promisifiedFunction = Promise.promisify(someFunction);
var generatedSourceCode = promisifiedFunction.toString();
console.log(generatedSourceCode);

I'm currently debugging in some non-public code. Here is the generated code for my failing case:
function (_arg0,_arg1,_arg2) {
    'use strict';
    var len = arguments.length;
    var promise = new Promise(INTERNAL);
    promise._captureStackTrace();
    var nodeback = nodebackForPromise(promise);
    var ret;
    var callback = tryCatch(fn);
    switch(len) {
        case 0:ret = callback.call(receiver, nodeback); break;
        case 1:ret = callback.call(receiver, _arg0, nodeback); break;
        case 2:ret = callback.call(receiver, _arg0, _arg1, nodeback); break;
        case 3:ret = callback.call(receiver, _arg0, _arg1, _arg2, nodeback); break;

        default:
            var args = new Array(len + 1);
            var i = 0;
            for (var i = 0; i < len; ++i) {
               args[i] = arguments[i];
            }
            args[i] = nodeback;
            ret = callback.apply(receiver, args);
            break;
    }
    if (ret === errorObj) {
        promise._rejectCallback(maybeWrapAsError(ret.e), true, true);
    }
    return promise;
}

I assume several of the variables used here are closure variables defined outside the scope of this generated function, in particular receiver.
I'm still debugging, but have made slow progress today as I have had many distractions. My use case is a strange one, involving not only node addons, but an addon that brings up an embedded JVM and calls java functions. So, my use case is very much a corner case. If you don't see anything weird in the above, then I should do more work to pin down the bug on my end and get back to you. Thanks.

Since the generated code has  .call(receiver) rather than .call(this) you must have called promisify with a non-undefined second argument.

See https://github.com/jimlloyd/bluebird-promises-corner-case
This still has the complexity that depend on node-java, but it is the best short illustration of the problem I have so far.

Cannot make npm release right now but you can test with master by cloning
git clone https://github.com/petkaantonov/bluebird.git
cd bluebird && npm install
node tools/build --main
// generated files are in js/main folder

Thanks! I was busy this morning but finally had time to test, and saw that you released 2.9.8. I just tested it and it works great.
I wonder if you should clarify the API documentation for promisify. I'll submit a PR with a suggested change to API.md.

Yes, pull requests are very welcome :) thank you


calico-policy-controller is locked

My policy controller is in locked state, so when I'm changing the network policy the controller doesn't apply my rules. I started a new pod with the same configuration to fix my issue and I kept the old locked controller running to debug the issue.
Logs
$ kubectl logs -f calico-policy-controller-4200321479-xb3k7
2017-03-04 21:40:19,956 8 INFO Emptied the event queue
2017-03-04 21:45:08,602 8 INFO MODIFIED Pod: postgresql-staging-3564852714-jxbnt to queue (0)<PHONE_NUMBER>.6)
2017-03-04 21:45:08,603 8 INFO Handled MODIFIED for Pod: ('monitoring', 'postgresql-staging-3564852714-jxbnt')
2017-03-04 21:45:08,603 8 INFO Emptied the event queue
2017-03-04 21:45:17,914 8 INFO MODIFIED Pod: postgresql-staging-3564852714-jxbnt to queue (0)<PHONE_NUMBER>.91)
2017-03-04 21:45:17,915 8 INFO Handled MODIFIED for Pod: ('monitoring', 'postgresql-staging-3564852714-jxbnt')
2017-03-04 21:45:17,915 8 INFO Emptied the event queue

Infos
/ # ps auwx
PID   USER     TIME   COMMAND
    1 root       0:00 /dist/controller
    8 root       0:13 /dist/controller

/ # strace -p 1
Process 1 attached
wait4(-1,

/ # strace -p 8
Process 8 attached
futex(0x2a6c6a0, FUTEX_WAIT_PRIVATE, -1, NULL

Version
kube-policy-controller v0.5.2
k8s 1.5.3

ps. I talked with @fasaxc  on slack and he told me to talk to  @caseydavenport

I wonder if this is the same issue as #76 which has been addressed with the latest release v0.5.4 which was released yesterday.

@gianrubio yeah, it's possible that you're hitting #76.
Do you have a reliable repro scenario?  I'd recommend trying v0.5.4 to see if that fixes what you're seeing.

Ok, I'll upgrade my policy controller, please keep this issue open for some days so I'll back with the answer.

Looks fixed! Thanks


Add documentation for all config.yml options

Fixes #1052. Hopefully this brings the gopass documentation up to perfect level :sunglasses: .
While looking into these options, I noticed recipient_hash was always nil. I'm not sure whether this is intentional, but if it's supposed to be modified and stored then it isn't.

Codecov Report

Merging #1203 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #1203   +/-   ##
=======================================
  Coverage   62.68%   62.68%
=======================================
  Files         184      184
  Lines       10277    10277
=======================================
  Hits         6442     6442
  Misses       3038     3038
  Partials      797      797

Continue to review full report at Codecov.

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

thank you!


Adds author information on blog posts

Simply just adds names based on front matter in the post itself using the author parameter.
Can be fully disabled in the config.toml with the noauthor parameter

Hi ! Thanks your for your PR ! Just tested it and it's working great !
However, could you maybe add a little bit of CSS to it ? Font, size, color, etc. ... Have you tried to integrate it in the line with the date and the time needed to read ?

Yup just moved it between the date and the time to read the tag exists and added it to the css to make it align with the other front-matter components.
Here's a screenshot for an example:


[bug]Could not identify the intended function with name startDepositExit

Issue Type

[x] bug report
[ ] bug report

Current Behavior

when call
omg withdrawdeposit 0xfd02EcEE62797e75D86BCff1642EB0844afB28c7 1 100

the error
Could not identify the intended function with name `startDepositExit`,

Expected Behavior

expect get correct response
Submitted withdrawal

Steps to Reproduce

Follow readme to have software running as intended
execute command for withdrawdeposit  (as in sample)

Full output of error:

Traceback (most recent call last):
  File "/home/alex/soft/sidechain/env/bin/omg", line 11, in <module>
    load_entry_point('plasma==0.0.0', 'console_scripts', 'omg')()
  File "/home/alex/soft/sidechain/env/lib/python3.5/site-packages/click-6.7-py3.5.egg/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/home/alex/soft/sidechain/env/lib/python3.5/site-packages/click-6.7-py3.5.egg/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/home/alex/soft/sidechain/env/lib/python3.5/site-packages/click-6.7-py3.5.egg/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/alex/soft/sidechain/env/lib/python3.5/site-packages/click-6.7-py3.5.egg/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/alex/soft/sidechain/env/lib/python3.5/site-packages/click-6.7-py3.5.egg/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/home/alex/soft/sidechain/env/lib/python3.5/site-packages/click-6.7-py3.5.egg/click/decorators.py", line 27, in new_func
    return f(get_current_context().obj, *args, **kwargs)
  File "/home/alex/soft/sidechain/env/lib/python3.5/site-packages/plasma-0.0.0-py3.5.egg/plasma/cli/cli.py", line 157, in withdrawdeposit
    client.withdraw_deposit(owner, deposit_pos, amount)
  File "/home/alex/soft/sidechain/env/lib/python3.5/site-packages/plasma-0.0.0-py3.5.egg/plasma/client/client.py", line 53, in withdraw_deposit
    self.root_chain.startDepositExit(deposit_pos, amount, transact={'from': owner})
  File "/home/alex/soft/sidechain/env/lib/python3.5/site-packages/web3-4.3.0-py3.5.egg/web3/contract.py", line 879, in __call__
    return self.__prepared_function(*args, **kwargs)
  File "/home/alex/soft/sidechain/env/lib/python3.5/site-packages/web3-4.3.0-py3.5.egg/web3/contract.py", line 892, in __prepared_function
    return getattr(self._function(*args), modifier)(modifier_dict)
  File "/home/alex/soft/sidechain/env/lib/python3.5/site-packages/web3-4.3.0-py3.5.egg/web3/contract.py", line 1025, in __call__
    clone._set_function_info()
  File "/home/alex/soft/sidechain/env/lib/python3.5/site-packages/web3-4.3.0-py3.5.egg/web3/contract.py", line 1034, in _set_function_info
    self.kwargs
  File "/home/alex/soft/sidechain/env/lib/python3.5/site-packages/web3-4.3.0-py3.5.egg/web3/utils/contracts.py", line 128, in find_matching_fn_abi
    raise ValidationError(message)
web3.exceptions.ValidationError:
Could not identify the intended function with name `startDepositExit`, positional argument(s) of type `(<class 'int'>, <class 'int'>)` and keyword argument(s) of type `{}`.
Found 1 function(s) with the name `startDepositExit`: ['startDepositExit(uint256,address,uint256)']
Function invocation failed due to improper number of arguments.

Code that caused error:

  def withdraw_deposit(self, owner, deposit_pos, amount):
      self.root_chain.startDepositExit(deposit_pos, amount, transact={'from': owner})

Suggested Fix

the withdraw_deposit need one more param.....
def withdraw_deposit(self, owner, deposit_pos,amount,token='0x0.....0'):
        self.root_chain.startDepositExit(deposit_pos,token,amount, transact={'from': owner})

Motivation for Change

System Specs

python version: 3.5.2
pyetherem version: 2.3.0
environment (output of running pip freeze):

atomicwrites==1.1.5
attrdict==2.0.0
attrs==18.1.0
certifi==2018.4.16
chardet==3.0.4
click==6.7
cytoolz==<IP_ADDRESS>
eth-abi==1.1.1
eth-account==0.2.3
eth-hash==0.1.0
eth-keyfile==0.5.1
eth-keys==0.2.0b3
eth-rlp==0.1.2
eth-tester==0.1.0b15
eth-utils==1.0.3
ethereum==2.3.0
flake8==3.5.0
future==0.16.0
hexbytes==0.1.0
idna==2.7
json-rpc==1.10.8
leveldb==0.194
lru-dict==1.1.6
mccabe==0.6.1
more-itertools==4.2.0
parsimonious==0.8.0
pbkdf2==1.3
plasma==0.0.0
pluggy==0.6.0
plyvel==1.0.4
py==1.5.4
py-ecc==1.4.3
py-solc==3.1.0
pycodestyle==2.3.1
pycryptodome==3.6.3
pyethash==0.1.27
pyflakes==1.6.0
pylru==1.1.0
pysha3==1.0.2
pytest==3.6.2
PyYAML==3.12
repoze.lru==0.7
requests==2.19.1
rlp==0.6.0
scrypt==0.8.6
semantic-version==2.6.0
six==1.11.0
toolz==0.9.0
urllib3==1.23
web3==4.3.0
websockets==4.0.1
Werkzeug==0.13

operating system: ubuntu

Hi, can you confirm that this is now fixed as per #175?

@kfichter  yes,It has been fixed.
Another question that I didn't mention it in my email.
you also need to modify the example about send_tx :
send_tx 1 0 0 0 0 0 0xfd02EcEE62797e75D86BCff1642EB0844afB28c7 50 0x4B3eC6c9dC67079E82152d6D55d8dd96a8e6AA26 45 5 3bb369fecdc16b93b99514d8ed9c2e87c5824cf4a6a98d2e8e91b7dd0c063304

@kfichter Hi,sorry to bother you.  can you check your gmail and give me a reply?　Thank you so much!


Unexpected packet from server localhost:9000, ::1 on RPM build

Hi,
I have installed clickhouse as per the instructions here https://github.com/Altinity/clickhouse-rpm-install.
I have also enabled <listen_host>::</listen_host> in /etc/clickhouse-server/config.xml.
it started fine as below:

sudo /etc/init.d/clickhouse-server restart
Start clickhouse-server service: Path to data directory in /etc/clickhouse-server/config.xml: /var/lib/clickhouse/
DONE

But, when i start client it fails as below:

sudo clickhouse-client
ClickHouse client version 1.1.54383.
Connecting to localhost:9000.
Code: 102. DB::NetException: Unexpected packet from server localhost:9000, ::1 (expected Hello or Exception, got Unknown packet)

The port was in use by another process.
I had to change port in /etc/clickhouse-server/config.xml and pass it as a parameter when launching client as below:
clickhouse-client --port 9011


Remove BigInt and replace with i128

What
Remove BigInt and replace with i128
Why
BigInt is gone in the latest release, and replaced with i128.

Preview is available here:http://soroban-docs-pr237.previews.kube001.services.stellar-ops.com/


[test] Remove -whole-module-optimization from test IRGen/asmname.swift

That flag is not a frontend flag and has no effect on this test.

@swift-ci please smoke test

Thanks!


Can I use with Graphql Subscription ?

Totally.  You can pass the fastify.server to the apollographql/subscriptions-transport-ws server option.

Thank you sir

Can you write an example for me? I try to create a server that can use WebSocket but, it doesn't work

This is my code. it doesn't work.
https://gist.github.com/lagmanzaza/bfb8a63f861a05fdff35ce5abc890d14


Version 2 Documentation

Updating README, ReadTheDocs, and other documentation for version 2.0

Can someone review?

Also, your PR has trailing whitespaces and/or tabs.  The test that checks for it is not passing on Jenkins.  Fix it.

Will remove version 2 from read the docs

OK i think this is ready for another review


Does this work with Active Job?

Hi,
I've I'm using Resque with Active Job (using Rails 4.2.4), and I'm not clear on whether I can somehow just use this gem, or if I have to go back to using Resque the "old" way.
my current code looks like this:
/app/jobs/my_long_request_job.rb
class MyLongRequestJob < ActiveJob::Base
  queue_as :default

  def perform(request_id)
      request = MyRequest.find(request_id)
      request.long_running_process
  end
end

If you can let me know and/or update the documentation it would be very helpful!
Thanks!

I don't know, try adding extend Resque::Plugins::LockTimeout to your class and see if it works!
Let us know if it does.

Ok, the app didn't crash, but when I set @lock_timeout = 350, I tested, sending two requests -- and the lock was disregarded. The two jobs were immediately issued, one after the other - so at minimum, @lock_timeout doesn't seem to work, alas. :/. Thanks for your quick response.

If ActiveJob can work with Resque, there must be a way to use the plugins.
Wish I could help more, please do post back if you find a solution.

I don't know how to solve the particular integration issue, but I do see that someone else posted an ActiveJob lock plugin for resque -- Perhaps by studying the source, something could be gleaned:
https://github.com/idolweb/activejob-lock
I linked to this thread from here: https://github.com/resque/resque/issues/1354 -- so it seems the Resque project, itself is looking for answers.
Cheers!

If this can be done without complicating things I'd be happy to accept a PR.
I had a quick scan of that repo, but it didn't jump out at me what we could do.
Pull requests welcome :)


Default value / of quarkus.cxf.path makes RESTeasy and health endpoints inaccessible

Originally reported in https://github.com/apache/camel-quarkus/issues/4192
We should check, whether we can register our Vert.x handler without using the wildcard path matcher /*.

The way this could be fixed is sketched in https://github.com/quarkiverse/quarkus-cxf/pull/796 It is really just a sketch where I deploy two CXF services under /hello and /hi and the two associated vert.x routes are hard coded to those paths rather than using one /* route. In that way, the RESTEasy endpoint under /rest stays accessible.
It is currently not possible to define the vert.x routes based on SOAP endpoint paths, because those paths are a part of runtime configuration. I think it could be changed to build time. What do others think?
I need to figure out, how Camel Quarkus could cope with it. IIRC, all endpoints are deployed programmatically at runtime there.

Another option could perhaps be to deploy the handler through a runtime recorder using the router from VertxWebRouterBuildItem, like it is done in GRPC:
https://github.com/quarkusio/quarkus/blob/bb3d84baa27c1ddd19874e48d91043211d82c0a8/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/runtime/GrpcServerRecorder.java#L174-L180

In the end, we solved this issue by changing the default value of quarkus.cxf.path from / to /services.
CXF on Spring Boot is said to use the same default.


Broken types

In Target/Function/Integration.d.ts and almost everywhere else the Type is not resolved:
/**
 * @module Integration
 *
 */
export declare let System: string;
declare const _default: Type;
export default _default;
import type Type from<EMAIL_ADDRESS>
Target/Interface/Option.d.ts:

Fixed in astro-compress v2.2.23 and @playform/compress v0.0.4


[8.x] Add Request::values method

Description
This PR introduces the Request::values() method, making it super easy to retrieve a subset of nested array values using dot and asterisk syntax. If the request key is not an array, the request value retrieved is simply returned.
Example
$data = [
    'name' => 'Steve',
    'companies' => [
        ['id' => 1],
        ['id' => 2],
        ['id' => 3],
    ],
];

// Request submitted...

// With "only":
// ['companies' => ['*' => ['id' => [1,2,3]]]]
$ids = $request->only('companies.*.id');

// With "values":
// [1,2,3]
$ids = $request->values('companies.*.id');

// Steve
$name = $request->values('name');

// null
$request->values('missing');

Note
Not sure if you'd like this named plural or singular. Since it's pointless to use this method to retrieve single request values, I named it plural to signify it's likely usage.

Thanks for your time! No hard feelings on closure ❤

Request methods input() and the recently-added collect() handle this:
$request = request()->merge([
    'name' => 'Steve',
    'companies' => [
        ['id' => 1],
        ['id' => 2],
        ['id' => 3],
    ],
]);

$request->input('companies.*.id');
// [1, 2, 3]

$request->collect('companies.*.id')->all;
// [1, 2, 3]


delay at start where activations are not caught

Moved from https://github.com/adobe/wskdebug/issues/1
Sometimes there seems to be a little delay at the start when activations are not caught by the agent for some reason. Affects the standard agent.
Seems to happen when turning wskdebug on and off again, leading to action restoring and cold starts. Maybe because wskdebug polling and (web) action invocation around the same time lead to two separate containers spun up?

I haven't really seen it anymore and it seems hard to impossible to reproduce or do anything about. Closing for now.


Tool summaries quick action

[x] Quick action to open summaries panel
[x] Support for half width summaries
[x] Add summaries to tool registry
[ ] Let user choose which summaries to show
[ ] Current beacon (navigation) - distance, direction, etc
[ ] Recent notes
[ ] Weather forecast
[ ] Sunrise / sunset time
[ ] Current tide
[ ] Nearby beacons (distance, direction), limited to X with Y radius
[ ] Backtrack path details - duration, distance (if backtrack is on)
[ ] Battery time to empty estimate

This may be the same as #2049, but I like the idea of launching this as a quick action (or it could be a button in the quick action sheet)
Originally posted by @HidingInEmptySpace in https://github.com/kylecorry31/Trail-Sense/discussions/316#discussioncomment-9610716
Option to display when battery is low (maybe related to #2413) and as a quick action.

Design:
This will be a quick action that launches a summaries bottom sheet.
Tools can specify summaries just like they do quick actions. Summaries are full width views and they should try to be less than 200 dp (TBD) tall. They will be similar to cards in the old Google Now.
Summaries should have a title and an action button to open the associated tool.
The user can change which summaries are shown in the Tools settings.

Closing in favor of https://github.com/kylecorry31/Trail-Sense/issues/347


Enhancements for DB

Hey this looks good, But you can use this #606 and there mr Binu42 has added an feature to close box via clicking on out of the box, This makes the user experience good :)

But still it has some design issues :)

Great! I was using python+lxml to get the table out of the published google sheet.
Is there a link to the CSV/db file which one can use in analysis pipeline? Sorry but I couldn't find one on the main site.


Can't select floating window if it's alone on a workspace

Steps to reproduce:
open window A in workspace
make A floating
open window B in workspace
close B
Expected outcome:
B is unselected but can be reselected with something like "movefocus" or "cyclenext"
Noted outcome:
It's impossible to reselect the window without clicking on it with the mouse.
Hyprland version
Hyprland, built from branch main at commit 2bf7f9e4136ebef6db1159c636b163ecb96f23ccdirty (fixup constraint snapping on no hint).
flags: (if any)

cyclenext now will after 60e37d727def25c87a3fd6c47751c05f6082260f
can I close this?

Yep cyclenext works now but if I had to guess most people only use movefocus. Would fixing this for movefocus be feasible?

Something strange happens to me, when I move an Xwayland window there is a lag, but it doesn't happen with normal Wayland windows. I don't know if this issue refers to that.

I've just noticed my bookmark to this issue, which I totally forgot and created a dupe #4129. :/

Can't repro. I committed all focus related windowrules for floating windows, and the focus does change to a floating window, after all tiled are closed.

UPD: since no one else reported, neither here nor as a separate issue, should it be closed?

This is fixed for me.


apply is_stable=True to sort translation rules

fixes #2779

Thank you, @jekbradbury ! And good point. We can add it as a parameter if needed.
Verified internal tests pass! Since that's a superset of Travis, I'll merge.

You need to bump the minimum jaxlib version too since this is a backward incompatible change.

Whoops, good catch. I forgot about doing that!

Done in 6239e594.

Except I forgot to update .travis.yml in that... fixed!


Time multiplex bundles onto the same wire

It seems that if we can prove that none of the values in a bundle overlap then we can use the same wire to receive the inputs. What is the right way to do this? Probably needs special handling in the backend

One way to enable this is when the delay of a bundle (#97) is large enough and all values are disjoint, the values can be multiplexed onto the same wire.


Only record metrics if using the observability interface

Changes
As part of benchmarking and profiling I noticed that we spend a lot of time running metrics code. This can be seen in the flamegraph by searching for "metrics". You may to download the file and open it in your browser from your local files for the search function to work properly.

While there is other optimisations we could make (exploring how registering
and using the handles instead of macros affects performance) I think this optimisation is a good start.
Benchmarks
Below is the results of running the latte benchmark example with metrics enabled and disabled. The commands are:

With observability: cargo run --release --example cassandra_bench -- --topology-dir example-configs/cassandra-passthrough -r 1000
Without observability: cargo run --release --example cassandra_bench -- --topology-dir example-configs/cassandra-passthrough -r 1000 --config-path tests/helpers/config_without_observability.yaml

Without

With

The cost is on registering right?
Is there register calls that need to be moved out of hot code?

I'm intending to optimise metrics when enabled as well but this PR is just an easy performance win for cases where they definitely don't want metrics.
If there's a problem with the implementation, I can investigate how fast I can get it while enabled and if it ends up being fast enough we could just leave it on all the time.

Closing as stale, opened an issue to revisit in the future.


Updates fail when RUF is active and succeed otherwise

I tried to install a premium plugin called CAOS Super Stealth Upgrade from a zip file on several sites that had Rollback Update Failure installed. All of them failed.
After deactivating RUF, the same installation succeeded.
All the sites already had an older version installed, but InfiniteWP normally handles this when I select the option to overwrite the plugin if it exists.
Installing with "upload plugin" from within WP failed in the same way, but succeeded (with the new warning/selection) when RUF is deactivated.

Was there some sort of error notice failure notice? Could you screenshot and post it here?

Alas, no errors :(
Could this be related to the new functionality, which allows overwriting plugins?

I'm not certain what it's related to, but I'd like to find out.
Can you describe a test case using a public plugin that can be tested locally?

I can confirm that when trying to install WooCommerce while RUP was active, the installation failed, and succeeded when it was deactivated.

Was it already installed?
How did you install it?

It has been installed, then I renamed the directory and the plugin was deactivated. Then, I used InfiniteWP to install with the "overwrite" flag turned on, which shouldn't have been an issue in this case.
Importantly, I have several sites in the same cPanel account, so if RUF uses directories outside the specific WP installation, this can be a problem.

Thanks for the info. It seems there is an issue somewhere with InfiniteWP. I'll see if I can replicate locally.

Seems fixed indeed. I can now update plugins and even upload/overwrite them. Thank you.


"Permission Violation: You need  the 'Web Site Management' permission to access this page." Error when deploying – permission must be attached directly to user and not by role

I was a deploying a customisation with a custcontenttype record definition and the following error was being returned:
Details: Permission Violation: You need  the 'Web Site Management' permission to access this page. Please contact your account administrator.
File: ~/Objects/custcontenttype_3_t1358593_472.xml
Object: custcontenttype_3_t1358593_472 (cmscontenttype)
I checked the user I was using, and the roles it had assigned had the Web Site Management permission as one of its role's permissions. I tried again, it still failed.
I then assigned the permission directly to the user and I was able to deploy successfully.
I don't know if this an issue with the tool or NetSuite's APIs, but I encountered it while using the tool. Let me know if I should raise an issue in NetSuite instead.

@stevegoldberg This is not an issue coming from the tool itself but server side de. which role were you using? Developer role? If it was the developer role then the team responsible for this is already working on it.

I am using the developer role as one of the roles, but I also attached another custom role to my user which specifically had that permission and it wasn't being respected.
I figured it would probably be a server-side thing, but I wanted to check as I don't know if there's some code in the tool that checks roles/permissions. I'll close the issue, and you can delete it if you want.


async on_public receive 'None' in msg['M'] with 'query_exchange_state'

Hi,
In actual version (<IP_ADDRESS>.8), function async on_public receive 'None' in msg['M'] with subscription to 'query_exchange_state', in version <IP_ADDRESS>.7 works OK.
You can check with:
from bittrex_websocket import BittrexSocket, BittrexMethods
from time import sleep

# Define a new method to check if we have received all the data
def are_we_finished():
    ticker_cnt = len(tickers)
    exch_delta_cnt = len(exchange_deltas)
    summ_delta_cnt = len(summary_deltas)

    if exch_delta_cnt == summ_delta_cnt:
        num = (exch_delta_cnt + summ_delta_cnt) / ticker_cnt
        # E.g with 2 tickers the equation will be: (2 + 2) / 2 = 2
        if num == 2:
            return True
    return False

class MySocket(BittrexSocket):

    async def on_public(self, msg):
        if msg['invoke_type'] == BittrexMethods.QUERY_EXCHANGE_STATE:
            name = msg['M']
            if name not in exchange_deltas:
                exchange_deltas[name] = msg
                print('Just received exchange state for {}.'.format(name))
        elif msg['invoke_type'] == BittrexMethods.SUBSCRIBE_TO_SUMMARY_DELTAS:
            for summary in msg['D']:
                name = summary['M']
                if name in tickers and name not in summary_deltas:
                    summary_deltas[name] = summary
                    print('Just received summary delta update for {}.'.format(name))

# Add the new summary delta container
exchange_deltas = {}
summary_deltas = {}

# Create the socket instance
ws = MySocket()

# Enable logging
ws.enable_log()

# Define tickers
tickers = ['BTC-ETH', 'BTC-ZEC']

# Invoke subscriptions
ws.query_exchange_state(tickers)
ws.subscribe_to_summary_deltas()

while are_we_finished() is False:
    sleep(1)
else:
    print('We have received updates for all tickers. Closing...')
    ws.disconnect()
    sleep(10)

Hi @alexcaler, check the first bullet from this issue https://github.com/slazarov/python-bittrex-websocket/issues/63

Closing due to inactivity.


Use the Rails cache for everything

TLDR: This replaces the homegrown cache with the Rails cache. It turns out that the Cache class doesn't do anything, causing hundreds thousands of unnecessary requests to fetch locales, templates & components.
The story starts when @issyl0 and I were investigating high 404's on origin last week. We noticed that there we're a lot of requests to static for /templates/locales/en-GB, which returns 404:

By sampling a few requests (using the govuk_request_id) we figured out that most of those requests were coming from smart-answers. Moreover, each page request was sometimes responsible for 40 to 120 subsequent API requests:

The root cause of the 404's is that static doesn't have a en-GB locale, which is smart-answers default_locale. This was temporarily fixed in https://github.com/alphagov/static/tree/hack-locales-test.
But this didn't fix the issue, we just saw the 404 being replaced by 200:
Before: lots of 404s

After: lots of 200s

This meant that somehow, slimmer's caching was broken. To investigate further, we added a bunch of statsd instrumentation to slimmer, which sends stats for each cache hit/miss. The branch was deployed in  smart-answers to staging. After a while we got this graph from grafana:

It shows that there were actually no cache hits in slimmer, just a lot of misses. We can only conclude that the Cache class (which uses Singleton from the standard library) isn't actually working. We haven't been able to figure out why.
The solution is to replace the homegrown solution with Rails.cache.
After deploying this in smart-answers, we see the following in kibana:

@fields.status:200 AND @fields.application:"static" AND @fields.request: "/templates/locales/en-GB"

Which is exactly what we expect for a cache configured with expires_in: 5.minutes (one request per process).
After deploying the gem branch to smart-answers, collections, multipage-frontend and collections, we see that traffic drops significantly:

My guess is that when deployed to all frontend applications we'll see just a few hundred requests per hour for the locales, govuk_components and templates.
https://trello.com/c/D9HmkJwI

Is the Rails cache always configured? For whitehall frontend there's a memcached instance on every box, but not for "normal" frontend. But we should configure this.

Good point. Rails.cache defaults to ActiveSupport::Cache::FileStore, which is maybe fine for this usage? Memcached won't grow indefinitely and will allow the processes to share the cache, so definitely better.

Nice work! 😍
Would this also speed up local development of our frontend applications? We've had a small investigation into this to try and avoid the constant calls to static.

@nickcolley yeah, I think that would prevent those calls in dev for most applications.

Awesome PR :100: 🎆
Good work @tijmenb and @issyl0


Add support for additional Docker port bindings

Sorry that this took so long to check! This looks good to me.


Fixed debug trap code

Made sure we only do a minimal include for the Windows headers.
Guard using the standard WIN32 instead of PLATFORM_WINDOWS
Added debug trap support for gcc-based platforms.

Ignoring the win32 vs PLATFORM_WINDOWS checks and the WIN32_LEAN_AND_MEAN, the rest of this has already been incorporated. Looks like Ed or someone already pulled these bits in manually. Closing as superseded by previous change...


prevent tags from being separated inbetween

I experienced that tags such as +next where separated as +n e x t and thus the time tracking integration was not properly working.
The PR just adds the brackets around the parsed output from task warrior and thus is able to iterate over the list as a whole and not over the independent characters.

@felixschurk Thanks for the contribution, however, there are some issues with the test suite that need to be addressed before merging.
Also, I was not able to reproduce your issue with a test, unfortunately. Can you provide more information on that?
Here's a hook you can install to dump the input for the on-modified hook:
#!/usr/bin/env bash

# Input:
# - line of JSON for the original task
# - line of JSON for the modified task, the diff being the modification
read original_task
read modified_task

# Dump the data
echo "${original_task}" > /tmp/on-modify.dump
echo "${modified_task}" >> /tmp/on-modify.dump

# Create output:
echo "${modified_task}"
echo 'on-modify.dump'

exit 0

@lauft
Thanks for the script the output is as following:
$ task add testtask +new
Created task 78.

$ task 78 start
Starting task ea8efca9 'testtask'.
Started 1 task.
on-modify.dump
Tracking e n testtask
  Started 2023-12-01T09:36:56
  Current                  56
  Total               0:00:00
You have more urgent tasks.

where the corresponding dump with the original script then looks like
{"description":"testtask","entry":"20231201T083449Z","modified":"20231201T083558Z","status":"pending","uuid":"ea8efca9-97d3-42e5-8cf3-dfff34a30924","tags":["new"]}
{"description":"testtask","entry":"20231201T083449Z","modified":"20231201T083558Z","status":"pending","uuid":"ea8efca9-97d3-42e5-8cf3-dfff34a30924","tags":"new","start":"20231201T083656Z"}

when adding another tag such as +test the dump looks like
{"description":"testtask","entry":"20231201T083449Z","modified":"20231201T084520Z","status":"pending","uuid":"ea8efca9-97d3-42e5-8cf3-dfff34a30924","tags":["new","test"]}
{"description":"testtask","entry":"20231201T083449Z","modified":"20231201T084520Z","status":"pending","uuid":"ea8efca9-97d3-42e5-8cf3-dfff34a30924","tags":"test,new","start":"20231201T084525Z"}

@lauft
For having the on-modify.timewarrior working I also have on-modify-pirate installed.
Hooks
     System: Enabled
   Location: /home/felix/.task/hooks
     Active: on-add-pirate         (executable)
             on-modify-pirate      (executable)
             on-modify.timewarrior (executable)
   Inactive: on-modify.dump        (not executable)

where the pirate hooks do come from https://github.com/tbabej/taskpirate, also for the on-add I use https://github.com/tbabej/task.default-date-time.
So my hooks folder looks like
$ tree -L 2
.
├── default-time
│   ├── LICENCE
│   ├── pirate_add_default_time.py
│   ├── pirate_mod_default_time.py -> pirate_add_default_time.py
│   ├── __pycache__
│   └── README.md
├── on-add-pirate
├── on-modify.dump
├── on-modify-pirate
└── on-modify.timewarrior

But to your question, at least when they are all working as I guess, when I modify a task only the on-modify.timewarrior should get used.

@felixschurk Thanks for your reply and the references.
That confirms that tasklib converting the tag list from list to string in the JSON is the cause.
However, instead of simply switching to string, I would rather propose adding a workaround for this, preserving the expected behavior as well, see the following patch
diff --git a/on_modify.py b/on_modify.py
--- a/on_modify.py	(revision 360fc2292a5eab46cd5c9bdd4cc791b6f9ea5e9a)
+++ b/on_modify.py	(date<PHONE_NUMBER>269)
@@ -51,7 +51,13 @@
         tags.append(json_obj['project'])

     if 'tags' in json_obj:
-        tags.extend(json_obj['tags'])
+        if type(json_obj['tags']) is str:
+            # Usage of tasklib (e.g. in taskpirate) converts the tag list into a string
+            # If this is the case, convert it back into a list first
+            # See https://github.com/tbabej/taskpirate/issues/11
+            tags.extend(json_obj['tags'].split(','))
+        else:
+            tags.extend(json_obj['tags'])

     return tags

Of course, we should add tests for this as well: 🙂
diff --git a/test/test_on-modify_unit.py b/test/test_on-modify_unit.py
--- a/test/test_on-modify_unit.py	(revision 360fc2292a5eab46cd5c9bdd4cc791b6f9ea5e9a)
+++ b/test/test_on-modify_unit.py	(date<PHONE_NUMBER>207)
@@ -341,6 +341,66 @@
     verify(subprocess).call(['timew', 'start', 'Foo', ':yes'])

+@pytest.mark.usefixtures("teardown")
+def test_hook_should_process_start_issue34_with_multiple_tags():
+    """on-modify hook should process 'task start' (issue #34) with multiple tags"""
+
+    when(subprocess).call(...)
+    on_modify.main(
+        json.loads(
+            '''{
+            "description": "Foo",
+            "entry": "20190820T203842Z",
+            "modified": "20190820T203842Z",
+            "status": "pending",
+            "tags": ["abc", "xyz"],
+            "uuid": "16af44c5-57d2-43bf-97ed-cf2e541d927f"
+            }'''),
+        json.loads(
+            '''{
+            "description": "Foo",
+            "entry": "20190820T203842Z",
+            "modified": "20190820T203842Z",
+            "start": "20190820T203842Z",
+            "status": "pending",
+            "tags": "abc,xyz",
+            "uuid": "16af44c5-57d2-43bf-97ed-cf2e541d927f"
+            }''')
+    )
+
+    verify(subprocess).call(['timew', 'start', 'Foo', 'abc', 'xyz', ':yes'])
+
+
+@pytest.mark.usefixtures("teardown")
+def test_hook_should_process_start_issue34_with_single_tags():
+    """on-modify hook should process 'task start' (issue #34) with single tags"""
+
+    when(subprocess).call(...)
+    on_modify.main(
+        json.loads(
+            '''{
+            "description": "Foo",
+            "entry": "20190820T203842Z",
+            "modified": "20190820T203842Z",
+            "status": "pending",
+            "tags": ["abc"],
+            "uuid": "16af44c5-57d2-43bf-97ed-cf2e541d927f"
+            }'''),
+        json.loads(
+            '''{
+            "description": "Foo",
+            "entry": "20190820T203842Z",
+            "modified": "20190820T203842Z",
+            "start": "20190820T203842Z",
+            "status": "pending",
+            "tags": "abc",
+            "uuid": "16af44c5-57d2-43bf-97ed-cf2e541d927f"
+            }''')
+    )
+
+    verify(subprocess).call(['timew', 'start', 'Foo', 'abc', ':yes'])
+
+
 @pytest.mark.usefixtures("teardown")
 def test_hook_should_process_stop():
     """on-modify hook should process 'task stop'"""

At least until https://github.com/tbabej/taskpirate/issues/19 and https://github.com/GothenburgBitFactory/tasklib/issues/77 are resolved.

@lauft
Yes, that seems like the proper way of doing and dealing with it.
I never worked with Pytest before, therefore I was unable to add there a proper unit test.
Should I incorporate the changes from your last comment to update that PR, or should we delete this PR and you create one with the changes?

@felixschurk Feel free to incorporate those changes 👍🏻
Thank you.

@lauft
I am quite inexperienced when it comes to python, pytest in combination with docker, so this might be a simple question.
How can I locally set up the test and run them, based on the docker-compose.yml file?
Or otherwise, which modules would I need to have on my local machine in order to run the tests? I saw that in the Dockerfile it revers to Debian, and I am on Fedora. Could this be a problem?
This is mainly as I would like to verify that it is running properly, before I push it online.

@felixschurk To run the unit tests locally, do
python3 -m venv venv                         # create virtual enviroment
venv/bin/pip install pytest mockito          # install requirements
export PYTHONPATH=.                          # set PYTHONPATH such it finds 'on_modify.py'
venv/bin/pytest test/test_on-modify_unit.py  # run the tests

If you want to run the end-2-end test as well, you will have to create a GitHub token first.
Go to your profile -> settings -> developer settings -> personal access tokens, and create a classic token with permission read:packages. With that authenticate against the GitHub Container Registry:
docker -u <username> ghcr.io

After that you can run an end-2-end test with the following command:
REGISTRY=ghcr.io OWNER=gothenburgbitfactory docker-compose run task-stable-timew-stable

Although you could also let GitHub actions take over this part. 🙂

Thank you a lot for the detailed explanation, I managed to set it locally up and now also the GitHub actions are happy.


fix for separate changelogs

don't symlink changelog into usr/share/doc/dmd
it's odd to only have the changelog there
version number (2.068.2.html) changes with every release

@jordisayol


feat: Update JavaScript SDKs to v8.0.0 for stable release

Updates to the stable release!

@timfish let's release it, we are blocked by this: https://github.com/toeverything/AFFiNE/pull/6968

Follow this issue to be notified of the release
https://github.com/getsentry/publish/issues/3875


How can I translate my main class variables

how can I do localization.
for example if user type /kr, then bot shows korean

hello,
telepot does not provide any special tools for localization, you need to convert all your string literals to use some localization libraries format (e.g. gettext) than store each user's preference in a database or similar and use that when sending messages to the user.
than on commands like /kr you simply change the user's preference. unfortunately, I don't have a simple code example to provide atm but if you didn't manage to get it working ask here and i or @nickoala will try to add an example including localization to the examples directory.


macro sarge breaks line before docpart

Hello
While learning rust I stumbled over your project. I like your approach to not build against a lot of dependencies. 👍
I worked through your project and found the help examples/help.rs and also the doc description of the sarge macro (this thing).
But the behavior differs. While in the example/help.rs the output is
$tag {space} $env {space} : $doc
the output from the sarge macro is
$tag {space} $env {space} :
$doc
There are "\n" in the var_tag macro (there, there and there)
Oh forgot the last one this one
After removing this "\n" the output looks better to me.
Because I'm pretty new to rust and don't know if I break something I did not create a PR to solve this, but I think the solution should be pretty fast forward. ;)
Another little improvement would be when the doc string gets a line break. It continues directly under the colon.
For design purposes it would be great if the string starts under the first char from its start.
Regards Daimonion

Thanks for the interest! I use the help feature very little, thank you for investigating this. I'll fix it as soon as I can.
I'm not certain about how the description continuation ought to work, though; if it continues at the colon, then a long enough prior section could lead to width limiting making it be extremely thin and almost unreadable, like this:
--very-long-argument-name : this
                                                   is
                                                   the
                                                   description

Perhaps it could place the description indented on the next line iff there's not enough room after the flags section?

I got to my PC and tried out a very contrived example, and I realize now that it's not reasonable to expect the args section to get that long:

Even with all that, it's still not too compressed, so I'll go with your suggestion. Thanks for the input!

Commit 393f967 should fix this issue, let me know if there's anything still wrong.


When test assemblies are excluded from coverage the coverage visualizer errors out

KeyNotFoundException: The given key was not present in the dictionary.
at System.Collections.Generic.Dictionary2.get_Item(TKey key)    at AxoCover.Models.CoverageProvider.<>c__DisplayClass10_3.<GetFileCoverage>b__31(IGrouping2 p)
at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer)
at AxoCover.Models.CoverageProvider.GetFileCoverage(String filePath)
at AxoCover.Models.CoverageProvider.<>c__DisplayClass9_0.b__0()
at System.Threading.Tasks.Task`1.InnerInvoke()
at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at AxoCover.Models.CoverageProvider.d__9.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at AxoCover.LineCoverageAdornment.d__65.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.b__6_0(Object state)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

Fixed in <IP_ADDRESS>.


how to fix opacity at hovering?

don't working from use isDraggable

You should use drag layer in order to modify the dragging item.


Improve query result relevancy

There are two major ways to do this:

Tweak Elastic Search settings
Tweak the fill script which imports bash questions from SO/other sources.

I would say however, all in all the usefulness of Borg will be improved more by #11, but this is a lower hanging fruit.

Closing this for now, sine #11 is on the way, and some improvements were made by boosting the title.