ImportError: Can not find the shared library: libhdfs3.so

I have installed hdfs3 like mentioned here http://hdfs3.readthedocs.io/en/latest/install.html, the only difference is that I'm not connected to internet so I download the package from https://anaconda.org/conda-forge/ and I install it manully, I used to do this for all the packages that I have installed so far and that's work fine for me.
Now I'm struggling with the hdfs3 package, I don't know why he doesn't work:
[root@ Anaconda]# python
Python 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul  2 2016, 17:53:06)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from hdfs3 import HDFileSystem
>>> hdfs = HDFileSystem(host="slmupd5hm03.zres.ztech", port=8020)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/Anaconda/Anaconda3-4.2.0/lib/python3.5/site-packages/hdfs3/core.py", line 76, in __init__
    self.connect()
  File "/opt/Anaconda/Anaconda3-4.2.0/lib/python3.5/site-packages/hdfs3/core.py", line 94, in connect
    get_lib()
  File "/opt/Anaconda/Anaconda3-4.2.0/lib/python3.5/site-packages/hdfs3/core.py", line 657, in get_lib
    from .lib import _lib as l
  File "/opt/Anaconda/Anaconda3-4.2.0/lib/python3.5/site-packages/hdfs3/lib.py", line 22, in <module>
    raise ImportError("Can not find the shared library: libhdfs3.so\n"
ImportError: Can not find the shared library: libhdfs3.so
See installation instructions at http://hdfs3.readthedocs.io/en/latest/install.html

I've literally installed all package as I see in this post and I still see the same error: https://github.com/dask/hdfs3/issues/97
by the way this is the conda list output:
# packages in environment at /opt/Anaconda/Anaconda3-4.2.0:
#
_license                  1.1                      py35_1
_nb_ext_conf              0.3.0                    py35_0
alabaster                 0.7.9                    py35_0
anaconda                  4.2.0               np111py35_0
anaconda-clean            1.0.0                    py35_0
anaconda-client           1.5.1                    py35_0
anaconda-navigator        1.3.1                    py35_0
argcomplete               1.0.0                    py35_1
astroid                   1.4.7                    py35_0
astropy                   1.2.1               np111py35_0
babel                     2.3.4                    py35_0
backports                 1.0                      py35_0
beautifulsoup4            4.5.1                    py35_0
bitarray                  0.8.1                    py35_0
blaze                     0.10.1                   py35_0
bokeh                     0.12.2                   py35_0
boto                      2.42.0                   py35_0
bottleneck                1.1.0               np111py35_0
cairo                     1.12.18                       6
cffi                      1.7.0                    py35_0
chest                     0.2.3                    py35_0
click                     6.6                      py35_0
cloudpickle               0.2.1                    py35_0
clyent                    1.2.2                    py35_0
colorama                  0.3.7                    py35_0
conda                     4.2.9                    py35_0
conda-build               2.0.2                    py35_0
configobj                 5.0.6                    py35_0
contextlib2               0.5.3                    py35_0
cryptography              1.5                      py35_0
curl                      7.49.0                        1
cycler                    0.10.0                   py35_0
cython                    0.24.1                   py35_0
cytoolz                   0.8.0                    py35_0
dask                      0.11.0                   py35_0
datashape                 0.5.2                    py35_0
dbus                      1.10.10                       0
decorator                 4.0.10                   py35_0
dill                      0.2.5                    py35_0
docutils                  0.12                     py35_2
dynd-python               0.7.2                    py35_0
entrypoints               0.2.2                    py35_0
et_xmlfile                1.0.1                    py35_0
expat                     2.1.0                         0
fastcache                 1.0.2                    py35_1
fastparquet               0.1.0                    py27_2    file:///opt/Anaconda/Anaconda3-4.2.0/channel
filelock                  2.0.6                    py35_0
flask                     0.11.1                   py35_0
flask-cors                2.1.2                    py35_0
fontconfig                2.11.1                        6
freetype                  2.5.5                         1
geopy                     1.11.0                   py35_0    file:///opt/Anaconda/Anaconda3-4.2.0/channel
get_terminal_size         1.0.0                    py35_0
gevent                    1.1.2                    py35_0
ggplot                    0.11.5                   py35_2    file:///opt/Anaconda/Anaconda3-4.2.0/channel
glib                      2.43.0                        1
graphviz                  2.38.0                        5    file:///opt/Anaconda/Anaconda3-4.2.0/channel
greenlet                  0.4.10                   py35_0
gst-plugins-base          1.8.0                         0
gstreamer                 1.8.0                         0
h5py                      2.6.0               np111py35_2
harfbuzz                  0.9.39                        1
hdf5                      1.8.17                        1
hdfs3                     0.3.0                    py35_0    file:///opt/Anaconda/Anaconda3-4.2.0/channel
heapdict                  1.0.0                    py35_1
icu                       54.1                          0
idna                      2.1                      py35_0
imagesize                 0.7.1                    py35_0
ipykernel                 4.5.0                    py35_0
ipython                   5.1.0                    py35_0
ipython_genutils          0.1.0                    py35_0
ipywidgets                5.2.2                    py35_0
itsdangerous              0.24                     py35_0
jbig                      2.1                           0
jdcal                     1.2                      py35_1
jedi                      0.9.0                    py35_1
jinja2                    2.8                      py35_1
jpeg                      8d                            2
jsonschema                2.5.1                    py35_0
jupyter                   1.0.0                    py35_3
jupyter_client            4.4.0                    py35_0
jupyter_console           5.0.0                    py35_0
jupyter_core              4.2.0                    py35_0
lazy-object-proxy         1.2.1                    py35_0
libdynd                   0.7.2                         0
libffi                    3.2.1                         0
libgcc                    4.8.5                         2
libgcrypt11               1                             1    file:///opt/Anaconda/Anaconda3-4.2.0/channel
libgfortran               3.0.0                         1
libhdfs3                  2.3                           1    file:///opt/Anaconda/Anaconda3-4.2.0/channel
libpng                    1.6.22                        0
libprotobuf               3.5.1                h6f1eeef_0    file:///opt/Anaconda/Anaconda3-4.2.0/channel
libsodium                 1.0.10                        0
libtiff                   4.0.6                         2
libxcb                    1.12                          0
libxgboost                0.60                 hdfa14d8_0    file:///opt/Anaconda/Anaconda3-4.2.0/channel
libxml2                   2.9.2                         0
libxslt                   1.1.28                        0
llvmlite                  0.13.0                   py35_0
locket                    0.2.0                    py35_1
lxml                      3.6.4                    py35_0
markupsafe                0.23                     py35_2
matplotlib                1.5.3               np111py35_0
mistune                   0.7.3                    py35_0
mkl                       11.3.3                        0
mkl-service               1.1.2                    py35_2
mpmath                    0.19                     py35_1
multipledispatch          0.4.8                    py35_0
nb_anacondacloud          1.2.0                    py35_0
nb_conda                  2.0.0                    py35_0
nb_conda_kernels          2.0.0                    py35_0
nbconvert                 4.2.0                    py35_0
nbformat                  4.1.0                    py35_0
nbpresent                 3.0.2                    py35_0
networkx                  1.11                     py35_0
nltk                      3.2.1                    py35_0
nose                      1.3.7                    py35_1
notebook                  5.0.0                    py35_0    file:///opt/Anaconda/Anaconda3-4.2.0/channel
numba                     0.28.1              np111py35_0
numexpr                   2.6.1               np111py35_0
numpy                     1.11.1                   py35_0
odo                       0.5.0                    py35_1
openpyxl                  2.3.2                    py35_0
openssl                   1.0.2j                        0
pandas                    0.18.1              np111py35_0
partd                     0.3.6                    py35_0
patchelf                  0.9                           0
path.py                   8.2.1                    py35_0
pathlib2                  2.1.0                    py35_0
patsy                     0.4.1                    py35_0
pep8                      1.7.0                    py35_0
pexpect                   4.0.1                    py35_0
pickleshare               0.7.4                    py35_0
pillow                    3.3.1                    py35_0
pip                       8.1.2                    py35_0
pixman                    0.32.6                        0
pkginfo                   1.3.2                    py35_0
ply                       3.9                      py35_0
prompt_toolkit            1.0.3                    py35_0
psutil                    4.3.1                    py35_0
ptyprocess                0.5.1                    py35_0
py                        1.4.31                   py35_0
py-xgboost                0.60            py35np112h32b46d2_0    file:///opt/Anaconda/Anaconda3-4.2.0/channel
pyasn1                    0.1.9                    py35_0
pycosat                   0.6.1                    py35_1
pycparser                 2.14                     py35_1
pycrypto                  2.6.1                    py35_4
pycurl                    7.43.0                   py35_0
pyflakes                  1.3.0                    py35_0
pygments                  2.1.3                    py35_0
pylint                    1.5.4                    py35_1
pyopenssl                 16.0.0                   py35_0
pyparsing                 2.1.4                    py35_0
pyqt                      5.6.0                    py35_0
pytables                  <IP_ADDRESS>             np111py35_0
pytest                    2.9.2                    py35_0
python                    3.5.2                         0
python-dateutil           2.5.3                    py35_0
python-graphviz           0.5.2                    py35_0    file:///opt/Anaconda/Anaconda3-4.2.0/channel
pytz                      2016.6.1                 py35_0
pyyaml                    3.12                     py35_0
pyzmq                     15.4.0                   py35_0
qt                        5.6.0                         0
qtawesome                 0.3.3                    py35_0
qtconsole                 4.2.1                    py35_1
qtpy                      1.1.2                    py35_0
readline                  6.2                           2
redis                     3.2.0                         0
redis-py                  2.10.5                   py35_0
requests                  2.11.1                   py35_0
rope                      0.9.4                    py35_1
ruamel_yaml               0.11.14                  py35_0
sas7bdat                  2.0.6                    py35_0    file:///opt/Anaconda/Anaconda3-4.2.0/channel
scikit-image              0.12.3              np111py35_1
scikit-learn              0.17.1              np111py35_2
scipy                     0.18.1              np111py35_0
setuptools                27.2.0                   py35_0
simplegeneric             0.8.1                    py35_1
singledispatch            <IP_ADDRESS>                  py35_0
sip                       4.18                     py35_0
six                       1.10.0                   py35_0
snowballstemmer           1.2.1                    py35_0
sockjs-tornado            1.0.3                    py35_0
sphinx                    1.4.6                    py35_0
spyder                    3.0.0                    py35_0
sqlalchemy                1.0.13                   py35_0
sqlite                    3.13.0                        0
statsmodels               0.6.1               np111py35_1
sympy                     1.0                      py35_0
terminado                 0.6                      py35_0
tk                        8.5.18                        0
toolz                     0.8.0                    py35_0
tornado                   4.4.1                    py35_0
traitlets                 4.3.0                    py35_0
unicodecsv                0.14.1                   py35_0
wcwidth                   0.1.7                    py35_0
werkzeug                  0.11.11                  py35_0
wheel                     0.29.0                   py35_0
widgetsnbextension        1.2.6                    py35_0
wrapt                     1.10.6                   py35_0
xlrd                      1.0.0                    py35_0
xlsxwriter                0.9.3                    py35_0
xlwt                      1.1.2                    py35_0
xz                        5.2.2                         0
yaml                      0.1.6                         0
zeromq                    4.1.4                         0
zlib                      1.2.8                         3

You also need libhdfs3, which is a separate conda package: https://anaconda.org/conda-forge/libhdfs3. This is pulled in automatically when you run conda install hdfs3, but not when you do the installation manually.

It is worth running the first few lines in /opt/Anaconda/Anaconda3-4.2.0/lib/python3.5/site-packages/hdfs3/lib.py manually, bypassing the try/except, in order to find out what the underlying error was: is the library missing, or is there some version incompatibility.

I don't have any idea about where should I put try/except in the code:
[root@ Anaconda]# python /opt/Anaconda/Anaconda3-4.2.0/lib/python3.5/site-packages/hdfs3/lib.py
Traceback (most recent call last):
File "/opt/Anaconda/Anaconda3-4.2.0/lib/python3.5/site-packages/hdfs3/lib.py", line 22, in
raise ImportError("Can not find the shared library: libhdfs3.so\n"
ImportError: Can not find the shared library: libhdfs3.so
See installation instructions at http://hdfs3.readthedocs.io/en/latest/install.html
you may need to know something further, I joind the hdfs3/lib.py code below, you can tell me where should I put the try/except and I will:
# -*- coding: utf-8 -*-
"""
Low-level interface to libhdfs3
"""

import sys
import ctypes as ct

PY3 = sys.version_info.major > 2

_lib = None
for name in ['libhdfs3.so', 'libhdfs3.dylib']:
    try:
        _lib = ct.cdll.LoadLibrary(name)
        break
    except OSError as e:
        if not e.args or ("image not found" not in str(e.args[0]) and
                          "No such file" not in str(e)):
            raise
if _lib is None:
    raise ImportError("Can not find the shared library: libhdfs3.so\n"
                      "See installation instructions at "
                      "http://hdfs3.readthedocs.io/en/latest/install.html")

tSize = ct.c_int32
tTime = ct.c_int64
tOffset = ct.c_int64
tPort = ct.c_uint16

class BlockLocation(ct.Structure):
    _fields_ = [('corrupt', ct.c_int),
                ('numOfNodes', ct.c_int),
                ('hosts', ct.POINTER(ct.c_char_p)),
                ('names', ct.POINTER(ct.c_char_p)),
                ('topologyPaths', ct.POINTER(ct.c_char_p)),
                ('length', ct.c_int64),
                ('offset', ct.c_int64)]

class EncryptionFileInfo(ct.Structure):
    _fields_ = [('suite', ct.c_int),
                ('protocol_version', ct.c_int),
                ('key', ct.c_char_p),
                ('key_name', ct.c_char_p),
                ('mIv', ct.c_char_p),
                ('zone_key_version_name', ct.c_char_p)]

class EncryptionZoneInfo(ct.Structure):
    _fileds_ = [('suite', ct.c_int),
                ('protocol_version', ct.c_int),
                ('mId', ct.c_int64),
                ('path', ct.c_char_p),
                ('key_name', ct.c_char_p)]

class FileInfo(ct.Structure):
    _fields_ = [('kind', ct.c_int8),
                ('name', ct.c_char_p),
                ('last_mod', ct.c_int64),  # time_t, could be 32bit
                ('size', ct.c_int64),
                ('replication', ct.c_short),
                ('block_size', ct.c_int64),
                ('owner', ct.c_char_p),
                ('group', ct.c_char_p),
                ('permissions', ct.c_short),  # view as octal
                ('last_access', ct.c_int64),  # time_t, could be 32bit
                ('encryption_info', ct.POINTER(EncryptionFileInfo))]

hdfsGetPathInfo = _lib.hdfsGetPathInfo
hdfsGetPathInfo.argtypes = [ct.c_char_p]
hdfsGetPathInfo.restype = ct.POINTER(FileInfo)
hdfsGetPathInfo.__doc__ = """Get information about a path as a (dynamically
allocated) single hdfsFileInfo struct. hdfsFreeFileInfo should be
called when the pointer is no longer needed.

param fs The configured filesystem handle.
param path The path of the file.
return Returns a dynamically-allocated hdfsFileInfo object;
NULL on error."""

class hdfsBuilder(ct.Structure):
    pass

class hdfsFile(ct.Structure):
    _fields_ = [('input', ct.c_bool), ('stream', ct.c_void_p)]

class hdfsFS(ct.Structure):
    _fields_ = [('filesystem', ct.c_void_p)]  # TODO: expand this if needed

hdfsGetFileBlockLocations = _lib.hdfsGetFileBlockLocations
hdfsGetFileBlockLocations.argtypes = [ct.POINTER(hdfsFS), ct.c_char_p,
                                      tOffset, tOffset, ct.POINTER(ct.c_int)]
hdfsGetFileBlockLocations.restype = ct.POINTER(BlockLocation)
hdfsGetFileBlockLocations.__doc__ = """Get an array containing hostnames, offset and size of portions of the given file.

param fs The file system
param path The path to the file
param start The start offset into the given file
param length The length for which to get locations for
param numOfBlock Output the number of elements in the returned array
return An array of BlockLocation struct."""

hdfsGetLastError = _lib.hdfsGetLastError
hdfsGetLastError.argtypes = []
hdfsGetLastError.restype = ct.c_char_p
hdfsGetLastError.__doc__ = """Return error information of last failed operation.

return A not NULL const string point of last error information.
Caller can only read this message and keep it unchanged. No need to free it.
If last operation finished successfully, the returned message is undefined."""

hdfsFileIsOpenForRead = _lib.hdfsFileIsOpenForRead
hdfsFileIsOpenForRead.argtypes = [ct.POINTER(hdfsFile)]
hdfsFileIsOpenForRead.restype = ct.c_bool
hdfsFileIsOpenForRead.__doc__ = """Determine if a file is open for read.

param file     The HDFS file
return         1 if the file is open for read; 0 otherwise"""

hdfsFileIsOpenForWrite = _lib.hdfsFileIsOpenForRead
hdfsFileIsOpenForWrite.argtypes = [ct.POINTER(hdfsFile)]
hdfsFileIsOpenForWrite.restype = ct.c_bool
hdfsFileIsOpenForWrite.__doc__ = """Determine if a file is open for write.

param file     The HDFS file
return         1 if the file is open for write; 0 otherwise"""

hdfsConnectAsUser = _lib.hdfsConnectAsUser
hdfsConnectAsUser.argtypes = [ct.c_char_p, tPort, ct.c_char_p]
hdfsConnectAsUser.restype = ct.POINTER(hdfsFS)
hdfsConnectAsUser.__doc__ = """Connect to a hdfs file system as a specific user

param nn   The NameNode.  See hdfsBuilderSetNameNode for details.
param port The port on which the server is listening.
param user the user name (this is hadoop domain user). Or NULL is equivelant to hhdfsConnect(host, port)
return Returns a handle to the filesystem or NULL on error.
deprecated Use hdfsBuilderConnect instead."""

hdfsConnectAsUserNewInstance = _lib.hdfsConnectAsUserNewInstance
hdfsConnectAsUserNewInstance.argtypes = [ct.c_char_p, tPort, ct.c_char_p]
hdfsConnectAsUserNewInstance.restype = ct.POINTER(hdfsFS)
hdfsConnectAsUserNewInstance.__doc__ = "Connect to a hdfs file system as a specific user, new instance"

hdfsConnect = _lib.hdfsConnect
hdfsConnect.argtypes = [ct.c_char_p, tPort]
hdfsConnect.restype = ct.POINTER(hdfsFS)
hdfsConnect.__doc__ = """Connect to a hdfs file system

param nn   The NameNode.  See hdfsBuilderSetNameNode for details.
param port The port on which the server is listening.
return Returns a handle to the filesystem or NULL on error.
deprecated Use hdfsBuilderConnect instead."""

hdfsConnectNewInstance = _lib.hdfsConnectNewInstance
hdfsConnectNewInstance.argtypes = [ct.c_char_p, tPort]
hdfsConnectNewInstance.restype = ct.POINTER(hdfsFS)
hdfsConnectNewInstance.__doc__ = "New structure for connection information"

hdfsBuilderConnect = _lib.hdfsBuilderConnect
hdfsBuilderConnect.argtypes = [ct.POINTER(hdfsBuilder)]
hdfsBuilderConnect.restype = ct.POINTER(hdfsFS)
hdfsBuilderConnect.__doc__ = """Connect to HDFS using the parameters defined by the builder.

The HDFS builder will be freed, whether or not the connection was
successful.

Every successful call to hdfsBuilderConnect should be matched with a call
to hdfsDisconnect, when the hdfsFS is no longer needed.

param bld    The HDFS builder
return       Returns a handle to the filesystem, or NULL on error.
"""

hdfsNewBuilder = _lib.hdfsNewBuilder
hdfsNewBuilder.argtypes = []
hdfsNewBuilder.restype = ct.POINTER(hdfsBuilder)
hdfsNewBuilder.__doc__ = "Create an HDFS builder."

hdfsBuilderSetForceNewInstance = _lib.hdfsBuilderSetForceNewInstance
hdfsBuilderSetForceNewInstance.argtypes = [ct.POINTER(hdfsBuilder)]
hdfsBuilderSetForceNewInstance.restype = None
hdfsBuilderSetForceNewInstance.__doc__ = "Do nothing, we always create a new instance"

hdfsBuilderSetNameNode = _lib.hdfsBuilderSetNameNode
hdfsBuilderSetNameNode.argtypes = [ct.POINTER(hdfsBuilder), ct.c_char_p]
hdfsBuilderSetNameNode.restype = None
hdfsBuilderSetNameNode.__doc__ = """Set the HDFS NameNode to connect to.

param bld  The HDFS builder
param nn   The NameNode to use.

             If the string given is 'default', the default NameNode
             configuration will be used (from the XML configuration files)

             If NULL is given, a LocalFileSystem will be created.

             If the string starts with a protocol type such as file:// or
             hdfs://, this protocol type will be used.  If not, the
             hdfs:// protocol type will be used.

             You may specify a NameNode port in the usual way by
             passing a string of the format hdfs://<hostname>:<port>.
             Alternately, you may set the port with
             hdfsBuilderSetNameNodePort.  However, you must not pass the
             port in two different ways."""

hdfsBuilderSetNameNodePort = _lib.hdfsBuilderSetNameNodePort
hdfsBuilderSetNameNodePort.argtypes = [ct.POINTER(hdfsBuilder), tPort]
hdfsBuilderSetNameNodePort.restype = None
hdfsBuilderSetNameNodePort.__doc__ = """Set the port of the HDFS NameNode to connect to.

param bld The HDFS builder
param port The port."""

hdfsBuilderSetUserName = _lib.hdfsBuilderSetUserName
hdfsBuilderSetUserName.argtypes = [ct.POINTER(hdfsBuilder), ct.c_char_p]
hdfsBuilderSetUserName.restype = None
hdfsBuilderSetUserName.__doc__ = """Set the username to use when connecting to the HDFS cluster.

param bld The HDFS builder
param userName The user name.  The string will be shallow-copied."""

hdfsBuilderSetKerbTicketCachePath = _lib.hdfsBuilderSetKerbTicketCachePath
hdfsBuilderSetKerbTicketCachePath.argtypes = [ct.POINTER(hdfsBuilder), ct.c_char_p]
hdfsBuilderSetKerbTicketCachePath.restype = None
hdfsBuilderSetKerbTicketCachePath.__doc__ = """Set the path to the Kerberos ticket cache to use when connecting to the HDFS cluster.

param bld The HDFS builder
param kerbTicketCachePath The Kerberos ticket cache path.  The string
                            will be shallow-copied."""

hdfsBuilderSetToken = _lib.hdfsBuilderSetToken
hdfsBuilderSetToken.argtypes = [ct.POINTER(hdfsBuilder), ct.c_char_p]
hdfsBuilderSetToken.restype = None
hdfsBuilderSetToken.__doc__ = """Set the token used to authenticate

param bld The HDFS builder
param token The token used to authenticate"""

hdfsFreeBuilder = _lib.hdfsFreeBuilder
hdfsFreeBuilder.argtypes = [ct.POINTER(hdfsBuilder)]
hdfsFreeBuilder.restype = None
hdfsFreeBuilder.__doc__ = "Free an HDFS builder."

hdfsBuilderConfSetStr = _lib.hdfsBuilderConfSetStr
hdfsBuilderConfSetStr.argtypes = [ct.POINTER(hdfsBuilder), ct.c_char_p, ct.c_char_p]
hdfsBuilderConfSetStr.__doc__ = """Set a configuration string for an HdfsBuilder.

param key      The key to set.
param val      The value, or NULL to set no value.
               This will be shallow-copied.  You are responsible for
               ensuring that it remains valid until the builder is
               freed.

return         0 on success; nonzero error code otherwise."""

hdfsDisconnect = _lib.hdfsDisconnect
hdfsDisconnect.argtypes = [ct.POINTER(hdfsFS)]
hdfsDisconnect.__doc__ = """Disconnect from the hdfs file system.

param fs The configured filesystem handle.
@return Returns 0 on success, -1 on error.
        Even if there is an error, the resources associated with the
        hdfsFS will be freed."""

hdfsOpenFile = _lib.hdfsOpenFile
hdfsOpenFile.argtypes = [ct.POINTER(hdfsFS), ct.c_char_p, ct.c_int, ct.c_int,
                         ct.c_short, tOffset]
hdfsOpenFile.restype = ct.POINTER(hdfsFile)
hdfsOpenFile.__doc__ = """Open a hdfs file in given mode.

Open a hdfs file in given mode.
param fs The configured filesystem handle.
param path The full path to the file.
param flags An | of bits/fcntl.h file flags. Supported flags are O_RDONLY,
            O_WRONLY (meaning create or overwrite i.e., implies O_TRUNCAT),
            O_WRONLY|O_APPEND and O_SYNC. Other flags are generally ignored
            other than (O_RDWR || (O_EXCL & O_CREAT)) which return NULL and
            set errno equal ENOTSUP.
param bufferSize Size of buffer for read/write - pass 0 if you want
 to use the default configured values.
param replication Block replication - pass 0 if you want to use
 the default configured values.
param blocksize Size of block - pass 0 if you want to use the
 default configured values.
return Returns the handle to the open file or NULL on error."""

hdfsCloseFile = _lib.hdfsCloseFile
hdfsCloseFile.argtypes = [ct.POINTER(hdfsFS), ct.POINTER(hdfsFile)]
hdfsCloseFile.__doc__ = """Close an open file.

param fs The configured filesystem handle.
param file The file handle.
return Returns 0 on success, -1 on error.
       On error, errno will be set appropriately.
       If the hdfs file was valid, the memory associated with it will
       be freed at the end of this call, even if there was an I/O
       error."""

hdfsExists = _lib.hdfsExists
hdfsExists.argtypes = [ct.POINTER(hdfsFS), ct.c_char_p]
hdfsExists.__doc__ = """Checks if a given path exsits on the filesystem

param fs The configured filesystem handle.
param path The path to look for
return Returns 0 on success, -1 on error."""

hdfsSeek = _lib.hdfsSeek
hdfsSeek.argtypes = [ct.POINTER(hdfsFS), ct.POINTER(hdfsFile), tOffset]
hdfsSeek.__doc__ = """Seek to given offset in file.
This works only for files opened in read-only mode.

param fs The configured filesystem handle.
param file The file handle.
param desiredPos Offset into the file to seek into.
return Returns 0 on success, -1 on error."""

hdfsTell = _lib.hdfsTell
hdfsTell.argtypes = [ct.POINTER(hdfsFS), ct.POINTER(hdfsFile)]
hdfsTell.restype = tOffset
hdfsTell.__doc__ = """Get the current offset in the file, in bytes.

param fs The configured filesystem handle.
param file The file handle.
return Current offset, -1 on error."""

hdfsRead = _lib.hdfsRead
hdfsRead.argtypes = [ct.POINTER(hdfsFS), ct.POINTER(hdfsFile), ct.c_void_p,
                     tSize]
hdfsRead.restype = tSize
hdfsRead.__doc__ = """Read data from an open file.

param fs The configured filesystem handle.
param file The file handle.
param buffer The buffer to copy read bytes into.
param length The length of the buffer.
return      On success, a positive number indicating how many bytes
            were read.
            On end-of-file, 0.
            On error, -1.  Errno will be set to the error code.
            Just like the POSIX read function, hdfsRead will return -1
            and set errno to EINTR if data is temporarily unavailable,
            but we are not yet at the end of the file."""

hdfsWrite = _lib.hdfsWrite
hdfsWrite.argtypes = [ct.POINTER(hdfsFS), ct.POINTER(hdfsFile), ct.c_void_p,
                      tSize]
hdfsWrite.restype = tSize
hdfsWrite.__doc__ = """Write data into an open file.

param fs The configured filesystem handle.
param file The file handle.
param buffer The data.
param length The no. of bytes to write.
return Returns the number of bytes written, -1 on error."""

hdfsHFlush = _lib.hdfsHFlush
hdfsHFlush.argtypes = [ct.POINTER(hdfsFS), ct.POINTER(hdfsFile)]
hdfsHFlush.__doc__ = """Flush the data.

param fs The configured filesystem handle.
param file The file handle.
return Returns 0 on success, -1 on error."""

hdfsSync = _lib.hdfsSync
hdfsSync.argtypes = [ct.POINTER(hdfsFS), ct.POINTER(hdfsFile)]
hdfsSync.__doc__ = """Flush out and sync the data in client's user buffer.
After the return of this call, new readers will see the data.

param fs configured filesystem handle
param file file handle
return 0 on success, -1 on error and sets errno"""

hdfsAvailable = _lib.hdfsAvailable
hdfsAvailable.argtypes = [ct.POINTER(hdfsFS), ct.POINTER(hdfsFile)]
hdfsAvailable.__doc__ = """Number of bytes that can be read without blocking.

param fs The configured filesystem handle.
param file The file handle.
return Returns available bytes; -1 on error."""

hdfsCopy = _lib.hdfsCopy
hdfsCopy.argtypes = [ct.POINTER(hdfsFS), ct.c_char_p,
                     ct.POINTER(hdfsFS), ct.c_char_p]
hdfsCopy.__doc__ = """Copy file from one filesystem to another.

param srcFS The handle to source filesystem.
param src The path of source file.
param dstFS The handle to destination filesystem.
param dst The path of destination file.
return Returns 0 on success, -1 on error."""

hdfsMove = _lib.hdfsMove
hdfsMove.argtypes = [ct.POINTER(hdfsFS), ct.c_char_p,
                     ct.POINTER(hdfsFS), ct.c_char_p]
hdfsMove.__doc__ = """Move file from one filesystem to another.

param srcFS The handle to source filesystem.
param src The path of source file.
param dstFS The handle to destination filesystem.
param dst The path of destination file.
return Returns 0 on success, -1 on error."""

hdfsConcat = _lib.hdfsConcat
hdfsConcat.argtypes = [ct.POINTER(hdfsFS), ct.c_char_p,
                       ct.POINTER(ct.c_char_p)]
hdfsConcat.__doc__ = """Concatenate (move) the blocks in a list of source
files into a single file deleting the source files.

Source files must all have the same block size and replication and all
but the last source file must be an integer number of full
blocks long.  The source files are deleted on successful
completion.

param fs The configured filesystem handle.
param trg The path of target (resulting) file
param scrs A list of paths to source files
return Returns 0 on success, -1 on error.
"""

hdfsDelete = _lib.hdfsDelete
hdfsDelete.argtypes = [ct.POINTER(hdfsFS), ct.c_char_p, ct.c_int]
hdfsDelete.__doc__ = """Delete file.

param fs The configured filesystem handle.
param path The path of the file.
param recursive if path is a directory and set to
 non-zero, the directory is deleted else throws an exception. In
 case of a file the recursive argument is irrelevant.
return Returns 0 on success, -1 on error."""

hdfsRename = _lib.hdfsRename
hdfsRename.argtypes = [ct.POINTER(hdfsFS), ct.c_char_p, ct.c_char_p]
hdfsRename.__doc__ = """Rename file.

param fs The configured filesystem handle.
param oldPath The path of the source file.
param newPath The path of the destination file.
return Returns 0 on success, -1 on error.
"""

hdfsGetWorkingDirectory = _lib.hdfsGetWorkingDirectory
hdfsGetWorkingDirectory.argtypes = [ct.POINTER(hdfsFS), ct.c_char_p, tSize]
hdfsGetWorkingDirectory.restype = ct.c_char_p
hdfsGetWorkingDirectory.__doc__ = """Get the current working directory for
the given filesystem.

param fs The configured filesystem handle.
param buffer The user-buffer to copy path of cwd into.
param bufferSize The length of user-buffer.
return Returns buffer, NULL on error.
"""

hdfsSetWorkingDirectory = _lib.hdfsSetWorkingDirectory
hdfsSetWorkingDirectory.argtypes = [ct.POINTER(hdfsFS), ct.c_char_p]
hdfsSetWorkingDirectory.__doc__ = """Set the working directory. All relative
paths will be resolved relative to it.

param fs The configured filesystem handle.
param path The path of the new 'cwd'.
return Returns 0 on success, -1 on error."""

hdfsCreateDirectory = _lib.hdfsCreateDirectory
hdfsCreateDirectory.argtypes = [ct.POINTER(hdfsFS), ct.c_char_p]
hdfsCreateDirectory.__doc__ = """Make the given file and all non-existent
parents into directories.

param fs The configured filesystem handle.
param path The path of the directory.
return Returns 0 on success, -1 on error."""

hdfsCreateDirectoryEx = _lib.hdfsCreateDirectoryEx
hdfsCreateDirectoryEx.argtypes = [ct.POINTER(hdfsFS), ct.c_char_p,
                                  ct.c_short, ct.c_int]
hdfsCreateDirectoryEx.restype = ct.c_int
hdfsCreateDirectoryEx.__doc__ = """Make the given file with extended options

param fs The configured filesystem handle.
param path The path of the directory.
param mode The permissions for created file and directories.
param createParents Controls whether to create all non-existent parent directories or not
return Returns 0 on success, -1 on error."""

hdfsSetReplication = _lib.hdfsSetReplication
hdfsSetReplication.argtypes = [ct.POINTER(hdfsFS), ct.c_char_p, ct.c_int16]
hdfsSetReplication.__doc__ = """Set the replication of the specified
file to the supplied value

param fs The configured filesystem handle.
param path The path of the file.
return Returns 0 on success, -1 on error."""

hdfsListDirectory = _lib.hdfsListDirectory
hdfsListDirectory.argtypes = [ct.POINTER(hdfsFS), ct.c_char_p,
                              ct.POINTER(ct.c_int)]
hdfsListDirectory.restype = ct.POINTER(FileInfo)
hdfsListDirectory.__doc__ = """Get list of files/directories for a given
directory-path. hdfsFreeFileInfo should be called to deallocate memory.

param fs The configured filesystem handle.
param path The path of the directory.
param numEntries Set to the number of files/directories in path.
return Returns a dynamically-allocated array of hdfsFileInfo
objects; NULL on error."""

hdfsGetPathInfo = _lib.hdfsGetPathInfo
hdfsGetPathInfo.argtypes = [ct.POINTER(hdfsFS), ct.c_char_p]
hdfsGetPathInfo.restype = ct.POINTER(FileInfo)
hdfsGetPathInfo.__doc__ = """Get information about a path as a (dynamically
allocated) single hdfsFileInfo struct. hdfsFreeFileInfo should be
called when the pointer is no longer needed.

param fs The configured filesystem handle.
param path The path of the file.
return Returns a dynamically-allocated hdfsFileInfo object;
NULL on error."""

hdfsFreeEncryptionZoneInfo = _lib.hdfsFreeEncryptionZoneInfo
hdfsFreeEncryptionZoneInfo.argtypes = [ct.POINTER(EncryptionZoneInfo), ct.c_int]
hdfsFreeEncryptionZoneInfo.restype = None
hdfsFreeEncryptionZoneInfo.__doc__ = """Free up the hdfsEncryptionZoneInfo array

param infos The array of dynamically-allocated hdfsEncryptionZoneInfo objects.
param numEntries The size of the array.
"""

hdfsFreeFileInfo = _lib.hdfsFreeFileInfo
hdfsFreeFileInfo.argtypes = [ct.POINTER(FileInfo), ct.c_int]
hdfsFreeFileInfo.restype = None
hdfsFreeFileInfo.__doc__ = """Free up the hdfsFileInfo array (including fields)
param infos The array of dynamically-allocated hdfsFileInfo
objects.

param numEntries The size of the arr"""

hdfsGetDefaultBlockSize = _lib.hdfsGetDefaultBlockSize
hdfsGetDefaultBlockSize.argtypes = [ct.POINTER(hdfsFS)]
hdfsGetDefaultBlockSize.restype = tOffset
hdfsGetDefaultBlockSize.__doc__ = """Get the default blocksize.

param fs            The configured filesystem handle.
deprecated          Use hdfsGetDefaultBlockSizeAtPath instead.
return              Returns the default blocksize, or -1 on error."""

hdfsGetCapacity = _lib.hdfsGetCapacity
hdfsGetCapacity.argtypes = [ct.POINTER(hdfsFS)]
hdfsGetCapacity.restype = tOffset
hdfsGetCapacity.__doc__ = """Return the raw capacity of the filesystem.

param fs The configured filesystem handle.
return Returns the raw-capacity; -1 on error."""

hdfsGetUsed = _lib.hdfsGetUsed
hdfsGetUsed.argtypes = [ct.POINTER(hdfsFS)]
hdfsGetUsed.restype = tOffset
hdfsGetUsed.__doc__ = """Return the total raw size of all files in the filesystem.

param fs The configured filesystem handle.
return Returns the total-size; -1 on error."""

hdfsChown = _lib.hdfsChown
hdfsChown.argtypes = [ct.POINTER(hdfsFS), ct.c_char_p, ct.c_char_p, ct.c_char_p]
hdfsChown.__doc__ = """Change the user and/or group of a file or directory.

param fs            The configured filesystem handle.
param path          the path to the file or directory
param owner         User string.  Set to NULL for 'no change'
param group         Group string.  Set to NULL for 'no change'
return              0 on success else -1"""

hdfsChmod = _lib.hdfsChmod
hdfsChmod.argtypes = [ct.POINTER(hdfsFS), ct.c_char_p, ct.c_short]
hdfsChmod.__doc__ = """param fs The configured filesystem handle.

param path the path to the file or directory
param mode the bitmask to set it to
return 0 on success else -1"""

hdfsUtime = _lib.hdfsUtime
hdfsUtime.argtypes = [ct.POINTER(hdfsFS), ct.c_char_p, tTime, tTime]
hdfsUtime.__doc__ = """@param fs The configured filesystem handle.

param path the path to the file or directory
param mtime new modification time or -1 for no change
param atime new access time or -1 for no change
return 0 on success else -1"""

hdfsTruncate = _lib.hdfsTruncate
hdfsTruncate.argtypes = [ct.POINTER(hdfsFS), ct.c_char_p, tOffset, ct.c_int]
hdfsTruncate.__doc__ = """Truncate the file in the indicated path to the indicated size.

param fs The configured filesystem handle.
param path the path to the file.
param pos the position the file will be truncated to.
param shouldWait output value, true if and client does not need to wait for block recovery,
false if client needs to wait for block recovery."""

hdfsGetDelegationToken = _lib.hdfsGetDelegationToken
hdfsGetDelegationToken.argtypes = [ct.POINTER(hdfsFS), ct.c_char_p]
hdfsGetDelegationToken.restype = ct.c_char_p
hdfsGetDelegationToken.__doc__ = """Get a delegation token from namenode.
The token should be freed using hdfsFreeDelegationToken after canceling the token or token expired.

param fs The file system
param renewer The user who will renew the token
return Return a delegation token, NULL on error."""

hdfsFreeDelegationToken = _lib.hdfsFreeDelegationToken
hdfsFreeDelegationToken.argtypes = [ct.c_char_p]
hdfsFreeDelegationToken.restype = None
hdfsFreeDelegationToken.__doc__ = """Free a delegation token.

param token The token to be freed."""

hdfsRenewDelegationToken = _lib.hdfsRenewDelegationToken
hdfsRenewDelegationToken.argtypes = [ct.POINTER(hdfsFS), ct.c_char_p]
hdfsRenewDelegationToken.restype = ct.c_int64
hdfsRenewDelegationToken.__doc__ = """Renew a delegation token.

param fs The file system.
param token The token to be renewed.
return the new expiration time"""

hdfsCancelDelegationToken = _lib.hdfsCancelDelegationToken
hdfsCancelDelegationToken.argtypes = [ct.POINTER(hdfsFS), ct.c_char_p]
hdfsCancelDelegationToken.restype = ct.c_int
hdfsCancelDelegationToken.__doc__ = """Cancel a delegation token.

param fs The file system.
param token The token to be canceled.
return return 0 on success, -1 on error."""

hdfsFreeFileBlockLocations = _lib.hdfsFreeFileBlockLocations
hdfsFreeFileBlockLocations.argtypes = [ct.POINTER(BlockLocation), ct.c_int]
hdfsFreeFileBlockLocations.restype = None
hdfsFreeFileBlockLocations.__doc__ = """Free the BlockLocation array returned by hdfsGetFileBlockLocations

param locations The array returned by hdfsGetFileBlockLocations
param numOfBlock The number of elements in the locations"""

hdfsListEncryptionZones = _lib.hdfsListEncryptionZones
hdfsListEncryptionZones.argtypes = [ct.POINTER(hdfsFS), ct.POINTER(ct.c_int)]
hdfsListEncryptionZones.restype = ct.POINTER(EncryptionZoneInfo)
hdfsListEncryptionZones.__doc__ = """Get list of all the encryption zones.

param fs The configured filesystem handle.
return Returns a dynamically-allocated array of hdfsEncryptionZoneInfo objects;
NULL on error."""

hdfsCreateEncryptionZone = _lib.hdfsCreateEncryptionZone
hdfsCreateEncryptionZone.argtypes = [ct.POINTER(hdfsFS), ct.c_char_p, ct.c_char_p]
hdfsCreateEncryptionZone.restype = ct.c_int
hdfsCreateEncryptionZone.__doc__ = """Create encryption zone for the directory

param fs The configured filesystem handle.
param path The path of the directory.
param keyname The key name of the encryption zone
return Returns 0 on success, -1 on error."""

I ran this piece of code:
[root@ Anaconda]# python
Python 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul  2 2016, 17:53:06)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ctypes as ct
>>> ct.cdll.LoadLibrary('libhdfs3.so')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/Anaconda/Anaconda3-4.2.0/lib/python3.5/ctypes/__init__.py", line 425, in LoadLibrary
    return self._dlltype(name)
  File "/opt/Anaconda/Anaconda3-4.2.0/lib/python3.5/ctypes/__init__.py", line 347, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: libgsasl.so.7: cannot open shared object file: No such file or directory

I fix this problem by installing two rpm: "libgsasl" and "libntlm"

but when I install the two rpm "libgsasl" and "libntlm", I also occur the same problem.My os is Centos7


ci: Disable builds on forks

Fixes https://github.com/argoproj/argo-workflows/issues/6581.
Signed-off-by: Yuan Tang<EMAIL_ADDRESS>

Good stuff.


(wrong-number-of-arguments (&keys url files) 4) when calling +pretty-code/install-patched-font "Iosevka"

What did you expect to happen?
The patched Iosveka to be installed.
What actually happened?
(wrong-number-of-arguments (&keys url files) 4) was thrown.
Additional details:

Debugger entered--Lisp error: (wrong-number-of-arguments (&keys url files) 4)
  signal(wrong-number-of-arguments ((&keys url files) 4))
  (if (= (length --cl-rest--) 3) (car-safe (prog1 --cl-rest-- (setq --cl-rest-- (cdr --cl-rest--)))) (signal 'wrong-number-of-arguments (list '(&keys url files) (length --cl-rest--))))
  (let* ((--cl-rest-- font-files) (&keys (if (= (length --cl-rest--) 3) (car-safe (prog1 --cl-rest-- (setq --cl-rest-- (cdr --cl-rest--)))) (signal 'wrong-number-of-arguments (list '(&keys url files) (length --cl-rest--))))) (url (car-safe (prog1 --cl-rest-- (setq --cl-rest-- (cdr --cl-rest--))))) (files (car --cl-rest--))) (+pretty-code--install-font prefix font-name url font-files))
  (if font-files (let* ((--cl-rest-- font-files) (&keys (if (= (length --cl-rest--) 3) (car-safe (prog1 --cl-rest-- (setq --cl-rest-- ...))) (signal 'wrong-number-of-arguments (list '... (length --cl-rest--))))) (url (car-safe (prog1 --cl-rest-- (setq --cl-rest-- (cdr --cl-rest--))))) (files (car --cl-rest--))) (+pretty-code--install-font prefix font-name url font-files)) (user-error "%S is not a valid font"))
  (let* ((font-files (and t (cdr (assoc font-name +pretty-code-font-alist))))) (if font-files (let* ((--cl-rest-- font-files) (&keys (if (= (length --cl-rest--) 3) (car-safe (prog1 --cl-rest-- ...)) (signal 'wrong-number-of-arguments (list ... ...)))) (url (car-safe (prog1 --cl-rest-- (setq --cl-rest-- ...)))) (files (car --cl-rest--))) (+pretty-code--install-font prefix font-name url font-files)) (user-error "%S is not a valid font")))
  +pretty-code/install-patched-font("Iosevka")
  funcall-interactively(+pretty-code/install-patched-font "Iosevka")
  call-interactively(+pretty-code/install-patched-font record nil)
  command-execute(+pretty-code/install-patched-font record)
  counsel-M-x-action("+pretty-code/install-patched-font")
  #f(compiled-function (x) #)("+pretty-code/install-patched-font")
  ivy-call()
  #f(compiled-function (arg1 arg2 &rest rest) "Read a string in the minibuffer, with completion.\n\nPROMPT is a string, normally ending in a colon and a space.\n`ivy-count-format' is prepended to PROMPT during completion.\n\nCOLLECTION is either a list of strings, a function, an alist, or\na hash table, supplied for `minibuffer-completion-table'.\n\nPREDICATE is applied to filter out the COLLECTION immediately.\nThis argument is for compatibility with `completing-read'.\n\nWhen REQUIRE-MATCH is non-nil, only members of COLLECTION can be\nselected.\n\nIf INITIAL-INPUT is non-nil, then insert that input in the\nminibuffer initially.\n\nHISTORY is a name of a variable to hold the completion session\nhistory.\n\nKEYMAP is composed with `ivy-minibuffer-map'.\n\nPRESELECT, when non-nil, determines which one of the candidates\nmatching INITIAL-INPUT to select initially.  An integer stands\nfor the position of the desired candidate in the collection,\ncounting from zero.  Otherwise, use the first occurrence of\nPRESELECT in the collection.  Comparison is first done with\n`equal'.  If that fails, and when applicable, match PRESELECT as\na regular expression.\n\nDEF is for compatibility with `completing-read'.\n\nUPDATE-FN is called each time the candidate list is re-displayed.\n\nWhen SORT is non-nil, `ivy-sort-functions-alist' determines how\nto sort candidates before displaying them.\n\nACTION is a function to call after selecting a candidate.\nIt takes one argument, the selected candidate. If COLLECTION is\nan alist, the argument is a cons cell, otherwise it's a string.\n\nMULTI-ACTION, when non-nil, is called instead of ACTION when\nthere are marked candidates. It takes the list of candidates as\nits only argument. When it's nil, ACTION is called on each marked\ncandidate.\n\nUNWIND is a function of no arguments to call before exiting.\n\nRE-BUILDER is a function transforming input text into a regex\npattern.\n\nMATCHER is a function which can override how candidates are\nfiltered based on user input.  It takes a regex pattern and a\nlist of candidates, and returns the list of matching candidates.\n\nDYNAMIC-COLLECTION is a boolean specifying whether the list of\ncandidates is updated after each input by calling COLLECTION.\n\nEXTRA-PROPS can be used to store collection-specific\nsession-specific data.\n\nCALLER is a symbol to uniquely identify the caller to `ivy-read'.\nIt is used, along with COLLECTION, to determine which\ncustomizations apply to the current completion session." #)("M-x " ("+pretty-code/install-patched-font" "cd" "5x5" "amx" "arp" "dbx" "dig" "erc" "ert" "eww" "ftp" "gdb" "irc" "jdb" "lsp" "man" "mpc" "pdb" "pwd" "rsh" "sdb" "xdb" "calc" "diff" "dirs" "ffap" "gnus" "grep" "help" "ielm" "info" "life" "mail" "mpuz" "ping" "pong" "talk" "term" "undo" "yank" "zone" "align" "chmod" "debug" "diary" "dired" "ediff" "edirs" "hanoi" "hayoo" ...) :predicate #f(compiled-function (x) #) :require-match t :history counsel-M-x-history :action counsel-M-x-action :keymap (keymap (67108908 . counsel--info-lookup-symbol) (67108910 . counsel-find-symbol)) :initial-input nil :caller counsel-M-x :sort t)
  apply(#f(compiled-function (arg1 arg2 &rest rest) "Read a string in the minibuffer, with completion.\n\nPROMPT is a string, normally ending in a colon and a space.\n`ivy-count-format' is prepended to PROMPT during completion.\n\nCOLLECTION is either a list of strings, a function, an alist, or\na hash table, supplied for `minibuffer-completion-table'.\n\nPREDICATE is applied to filter out the COLLECTION immediately.\nThis argument is for compatibility with `completing-read'.\n\nWhen REQUIRE-MATCH is non-nil, only members of COLLECTION can be\nselected.\n\nIf INITIAL-INPUT is non-nil, then insert that input in the\nminibuffer initially.\n\nHISTORY is a name of a variable to hold the completion session\nhistory.\n\nKEYMAP is composed with `ivy-minibuffer-map'.\n\nPRESELECT, when non-nil, determines which one of the candidates\nmatching INITIAL-INPUT to select initially.  An integer stands\nfor the position of the desired candidate in the collection,\ncounting from zero.  Otherwise, use the first occurrence of\nPRESELECT in the collection.  Comparison is first done with\n`equal'.  If that fails, and when applicable, match PRESELECT as\na regular expression.\n\nDEF is for compatibility with `completing-read'.\n\nUPDATE-FN is called each time the candidate list is re-displayed.\n\nWhen SORT is non-nil, `ivy-sort-functions-alist' determines how\nto sort candidates before displaying them.\n\nACTION is a function to call after selecting a candidate.\nIt takes one argument, the selected candidate. If COLLECTION is\nan alist, the argument is a cons cell, otherwise it's a string.\n\nMULTI-ACTION, when non-nil, is called instead of ACTION when\nthere are marked candidates. It takes the list of candidates as\nits only argument. When it's nil, ACTION is called on each marked\ncandidate.\n\nUNWIND is a function of no arguments to call before exiting.\n\nRE-BUILDER is a function transforming input text into a regex\npattern.\n\nMATCHER is a function which can override how candidates are\nfiltered based on user input.  It takes a regex pattern and a\nlist of candidates, and returns the list of matching candidates.\n\nDYNAMIC-COLLECTION is a boolean specifying whether the list of\ncandidates is updated after each input by calling COLLECTION.\n\nEXTRA-PROPS can be used to store collection-specific\nsession-specific data.\n\nCALLER is a symbol to uniquely identify the caller to `ivy-read'.\nIt is used, along with COLLECTION, to determine which\ncustomizations apply to the current completion session." #) ("M-x " ("+pretty-code/install-patched-font" "cd" "5x5" "amx" "arp" "dbx" "dig" "erc" "ert" "eww" "ftp" "gdb" "irc" "jdb" "lsp" "man" "mpc" "pdb" "pwd" "rsh" "sdb" "xdb" "calc" "diff" "dirs" "ffap" "gnus" "grep" "help" "ielm" "info" "life" "mail" "mpuz" "ping" "pong" "talk" "term" "undo" "yank" "zone" "align" "chmod" "debug" "diary" "dired" "ediff" "edirs" "hanoi" "hayoo" ...) :predicate #f(compiled-function (x) #) :require-match t :history counsel-M-x-history :action counsel-M-x-action :keymap (keymap (67108908 . counsel--info-lookup-symbol) (67108910 . counsel-find-symbol)) :initial-input nil :caller counsel-M-x :sort t))
  ivy-read("M-x " ("+pretty-code/install-patched-font" "cd" "5x5" "amx" "arp" "dbx" "dig" "erc" "ert" "eww" "ftp" "gdb" "irc" "jdb" "lsp" "man" "mpc" "pdb" "pwd" "rsh" "sdb" "xdb" "calc" "diff" "dirs" "ffap" "gnus" "grep" "help" "ielm" "info" "life" "mail" "mpuz" "ping" "pong" "talk" "term" "undo" "yank" "zone" "align" "chmod" "debug" "diary" "dired" "ediff" "edirs" "hanoi" "hayoo" ...) :predicate #f(compiled-function (x) #) :require-match t :history counsel-M-x-history :action counsel-M-x-action :keymap (keymap (67108908 . counsel--info-lookup-symbol) (67108910 . counsel-find-symbol)) :initial-input nil :caller counsel-M-x)
  counsel-M-x()
  funcall-interactively(counsel-M-x)
  call-interactively(counsel-M-x nil nil)
  command-execute(counsel-M-x)

Steps to reproduce:
From a fresh start: SPC : +pretty-code/install-patched-font and choose Iosevka, though the bug happens with all of them
System information:

emacs   version    28.0.50
        features   XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND DBUS GSETTINGS GLIB NOTIFY INOTIFY LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS LIBSYSTEMD JSON PDUMPER GMP
        build      Apr 01, 2020
        buildopts  (--prefix=/nix/store/fsrnjx5z8mj3bv3sndy358nylkf4a494-emacs-git-20200328.0 --disable-build-details --with-modules --with-x-toolkit=gtk3 --with-xft CFLAGS=-DMAC_OS_X_VERSION_MAX_ALLOWED=101200)
        windowsys  x
        daemonp    server-running
doom    version    2.0.9
        build      HEAD -> develop 84d2e6763 2020-03-31 15:20:58 -0400
        dir        ~/sync/dotfiles/doom-emacs/
system  type       gnu/linux
        config     x86_64-pc-linux-gnu
        shell      /run/current-system/sw/bin/fish
        uname      Linux 4.19.109 #1-NixOS SMP Wed Mar 11 13:15:13 UTC 2020 x86_64
        path       (/nix/store/kbycg3n20dk736fsq568wk00lxhxs05a-emacs-packages-deps/bin ~/bin /run/wrappers/bin ~/.nix-profile/bin /etc/profiles/per-user/ollie/bin /nix/var/nix/profiles/default/bin /run/current-system/sw/bin /nix/store/fsrnjx5z8mj3bv3sndy358nylkf4a494-emacs-git-20200328.0/libexec/emacs/28.0.50/x86_64-pc-linux-gnu)
config  envfile    nil
        elc-files  0
        modules    (:completion (company +childframe) (ivy +icons +prescient) :ui doom doom-dashboard doom-quit hl-todo modeline nav-flash ophints (popup +all +defaults) (pretty-code +iosevka) treemacs vc-gutter (window-select +switch-window) workspaces :editor (evil +everywhere) file-templates fold rotate-text :emacs dired electric ibuffer vc :term vterm :checkers (syntax +childframe) :tools direnv (lookup +docsets) (lsp +peek) magit :lang data (elm +lsp) emacs-lisp (haskell +lsp +ghcide) javascript markdown nix (org +attach +babel +capture +export +present +roam) rst sh :config (default +bindings +smartparens))
        packages   ((magit-todos :disable t))
        unpin      (n/a)
        elpa       (n/a)

As of 4ca30d5 this issue should be resolved. Let me know if that isn't the case and I'll reopen it. Thanks for bringing it to my attention!

Thanks, but I now get:
Debugger entered--Lisp error: (file-error "Creating directory" "Permission denied" "/fonts")
  signal(file-error ("Creating directory" "Permission denied" "/fonts"))
  files--ensure-directory("/fonts")
  mkdir("/fonts/" t)
  (if (file-directory-p font-dest) nil (mkdir font-dest t))
  (let* ((font-dest (cond ((eq window-system 'x) (expand-file-name "/fonts/" (or (getenv "XDG_DATA_HOME") (concat ... "/.local/share")))) ((memq window-system '(ns mac)) (expand-file-name "~/Library/Fonts/")) (t nil))) (known-dest\? (stringp font-dest)) (font-dest (or font-dest (read-directory-name "Font installation directory: " "~/")))) (if (file-directory-p font-dest) nil (mkdir font-dest t)) (let ((--dolist-tail-- fonts-alist)) (while --dolist-tail-- (let ((font (car --dolist-tail--))) (url-copy-file (format url-format font) (expand-file-name font font-dest) t) (setq --dolist-tail-- (cdr --dolist-tail--))))) (if known-dest\? (progn (message "Font downloaded, updating font cache... <fc-cache ...") (shell-command-to-string (format "fc-cache -f -v")))) (message "Successfully %s `%s' fonts to `%s'!%s" (if known-dest\? "installed" "downloaded") name font-dest))
  +pretty-code--install-font(nil "Iosevka" "https://github.com/jsravn/iosevka-emacs/raw/20fc2c..." (:url "https://github.com/jsravn/iosevka-emacs/raw/20fc2c..." :files ("iosevka-custom-lightoblique.ttf" "iosevka-custom-thinoblique.ttf" "iosevka-custom-mediumitalic.ttf" "iosevka-custom-light.ttf" "iosevka-custom-heavy.ttf" "iosevka-custom-bolditalic.ttf" "iosevka-custom-bold.ttf" "iosevka-custom-lightitalic.ttf" "iosevka-custom-thin.ttf" "iosevka-custom-extralight.ttf" "iosevka-custom-oblique.ttf" "iosevka-custom-italic.ttf" "iosevka-custom-heavyoblique.ttf" "iosevka-custom-heavyitalic.ttf" "iosevka-custom-extralightitalic.ttf" "iosevka-custom-thinitalic.ttf" "iosevka-custom-medium.ttf" "iosevka-custom-mediumoblique.ttf" "iosevka-custom-extralightoblique.ttf" "iosevka-custom-boldoblique.ttf" "iosevka-custom-regular.ttf")))

Do you want a new issue for this? It seems that I don't have XDG_DATA_HOME set in my environment (but I do have various other XDG_ variables).

@ocharles Shouldn't be necessary. a8f34f0 should fix that error.

I upgrade develop and got this error:
This will download and install the Iosevka fonts, are you sure you want to do this? (y or n) y
url-copy-file: Wrong type argument: stringp, :url

@huygn 07e8032 should fix the issue.

@hlissner thanks, upgraded got below output
...
Contacting host: github.com:443
Wrote /Users/huygn/Library/Fonts/iosevka-custom-regular.ttf
Font downloaded, updating font cache... <fc-cache -f -v>
let*: Not enough arguments for format string

@huygn Let's hope a381f59 is the one

Got the success message now 👍🏼

Also working for me now. Thank you!

I'm getting this similar backtrace trying to install patched Fira Code using a recent Doom Emacs when trying (+ligatures/install-patched-font 'fira) (or interactively):
Debugger entered--Lisp error: (wrong-number-of-arguments (font-name &keys _range url files) 7)
  signal(wrong-number-of-arguments ((font-name &keys _range url files) 7))
  (if (= (length --cl-rest--) 5) (car-safe (prog1 --cl-rest-- (setq --cl-rest-- (cdr --cl-rest--)))) (signal 'wrong-number-of-arguments (list '(font-name &keys _range url files) (length --cl-rest--))))
  (let* ((--cl-rest-- (or (alist-get font-id +ligatures--font-alist) (user-error "%S is not a valid font" font-id))) (font-name (if (= (length --cl-rest--) 5) (car-safe (prog1 --cl-rest-- (setq --cl-rest-- (cdr --cl-rest--)))) (signal 'wrong-number-of-arguments (list '(font-name &keys _range url files) (length --cl-rest--))))) (&keys (car-safe (prog1 --cl-rest-- (setq --cl-rest-- (cdr --cl-rest--))))) (_range (car-safe (prog1 --cl-rest-- (setq --cl-rest-- (cdr --cl-rest--))))) (url (car-safe (prog1 --cl-rest-- (setq --cl-rest-- (cdr --cl-rest--))))) (files (car --cl-rest--))) (+ligatures--install-font prefix font-name url files))
  +ligatures/install-patched-font(fira)
[...]

System information:

❯ doom info
((emacs
  (version . "27.1")
  (features . "XPM JPEG TIFF GIF PNG RSVG SOUND GPM DBUS GSETTINGS GLIB NOTIFY INOTIFY ACL GNUTLS LIBXML2 FREETYPE HARFBUZZ M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS LIBSYSTEMD JSON PDUMPER LCMS2 GMP")
  (build . "Aug 13, 2020")
  (buildopts "--prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib --localstatedir=/var --with-x-toolkit=gtk3 --with-xft --with-wide-int --with-modules 'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fno-plt' CPPFLAGS=-D_FORTIFY_SOURCE=2 LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now")
  (windowsys . batch)
  (daemonp . server-running))
 (doom
  (version . "2.0.9")
  (build . "HEAD -> develop c497cdabc 2020-08-23 02:32:58 -0400")
  (dir . "~/.doom.d/"))
 (system
  (type . gnu/linux)
  (config . "x86_64-pc-linux-gnu")
  (shell . "/bin/bash")
  (uname . "Linux 5.8.1-arch1-1 #1 SMP PREEMPT Wed, 12 Aug 2020 18:50:43 +0000 x86_64")
  (path "~/.doom-emacs/bin" "~/bin" "~/.local/bin" "~/.cargo/bin" "~/.doom-emacs/bin" "~/bin" "~/.local/bin" "~/.cargo/bin" "/usr/local/sbin" "/usr/local/bin" "/usr/bin" "/usr/bin/site_perl" "/usr/bin/vendor_perl" "/usr/bin/core_perl" "/usr/bin/site_perl" "/usr/bin/vendor_perl" "/usr/bin/core_perl" "/usr/lib/emacs/27.1/x86_64-pc-linux-gnu"))
 (config
  (envfile . envvar-file)
  (elc-files . 0)
  (modules :completion company (ivy +icons) :ui doom doom-dashboard fill-column hl-todo (ligatures +fira) modeline nav-flash ophints (popup +defaults) vc-gutter vi-tilde-fringe window-select :editor file-templates fold (format (:if (not WORK) +onsave)) word-wrap :emacs (dired +icons) electric (undo +tree) vc :term vterm :checkers syntax (spell +everywhere) :tools (eval +overlay) lookup lsp magit rgb :os tty :lang cc data json yaml emacs-lisp markdown org (rust +lsp) sh :email notmuch :app irc :config (default +bindings +smartparens))
  (packages (solarized-theme) (buffer-move) (zoom-window) (string-inflection) (dired-hide-dotfiles) (pkgbuild-mode) (highlight-thing) (defrepeater) (keychain-environment) (ztree) (notmuch-unread :recipe (:host github :repo "rbutoi/notmuch-unread")) (visual-fill-column) (password-store) (outshine) (mac-pseudo-daemon :disable (not IS-MAC)) (ivy-xref) (eglot :built-in 'prefer) (project :built-in 'prefer))
  (unpin "n/a")
  (elpa "n/a")))

@rbutoi Should be fixed in b5227b3

Thanks @hlissner ! There were two more changes had to make to get them installed:
diff --git a/modules/ui/ligatures/autoload/install.el b/modules/ui/ligatures/autoload/install.el
index 8a0ce69d3..1d07e5a86 100644
--- a/modules/ui/ligatures/autoload/install.el
+++ b/modules/ui/ligatures/autoload/install.el
@@ -31,7 +31,7 @@ filename of each font. It is used as the source and destination filename."
     (when known-dest-p
       (message "Font downloaded, updating font cache... <fc-cache -f -v> ")
       (shell-command-to-string "fc-cache -f -v"))
-    (if IS-WINDOW
+    (if IS-WINDOWS
         (when (y-or-n-p "The %S font was downloaded, but Windows users must install them manually.\n\nShow files in windows explorer?")
           (call-process "explorer.exe" nil nil nil font-dest))
       (message "Successfully %s %S fonts to %S!"
@@ -55,4 +55,4 @@ If PREFIX is non-nil, don't ask for confirmation and install it."
   (cl-destructuring-bind (font-name &key _range url files)
       (or (alist-get font-id +ligatures--font-alist)
           (user-error "%S is not a valid font" font-id))
-    (+ligatures--install-font prefix font-name url files)))
+    (+ligatures--install-font current-prefix-arg font-name url files)))

Although, after installing the patched fonts, I didn't get any ligatures to show up using (ligatures +fira), and ended up using this snippet on the official Emacs instructions.

Applied that patch in 97471f1.

Although, after installing the patched fonts, I didn't get any ligatures to show up using (ligatures +fira), and ended up using this snippet on the official Emacs instructions.

That's very strange, because Doom is doing exactly what that package does. In fact, those instructions come from somewhere that inspired Doom's implementation as well. The one difference is this line. Try changing it:
                (or (alist-get ',id +ligatures--font-alist)
                    (error "No ligature font called %s" ',id))
              (when range
-               (set-fontset-font t range name nil 'prepend))
+               (set-fontset-font t range name))
              (setq-default prettify-symbols-alist
                            (append (default-value 'prettify-symbols-alist)

This change was made to address seagle0128/doom-modeline#69.

Yeah there's something definitely something wrong on my end, since the fira-code-mode package doesn't work either, only the original code snippet linked from the FiraCode wiki. I certainly do have Fira Code Symbol installed:
❯ fc-list |grep 'Fira Code Symbol'
/home/radu/.local/share/fonts/FiraCode-Regular-Symbol.otf: Fira Code Symbol:style=Symbol-Regular

And the original snippet works with that font. At this point, though, it doesn't seem like a Doom problem, and I can try debugging this separately.


Scalar operator changes for Tensor on NumpyBackend

This change has only changes for Numpy Backend will follow up with other backend changes.

We need to sync this one with #358 as similar functionalities are added to backend.

Synced with @jziub . He will take care of addition and subtraction and I will make changes for the scalar multiply and divide.
Thanks!

Thanks for the PR!
Other projects have taken priority at this time, so I will review this in ~2 weeks.


add a list of people as a tab

Work in-progress - I've hit the anonymous GH API rate limit, so I'll continue this later.

Will close as completed
0bddc95 and fffc715 resolve the issue


Stable ports for "istioctl dashboard"

istioctl dashboard uses a dynamic port to avoid dealing with conflicts.
While working on https://github.com/istio/istio.io/pull/5296 I realized this makes it difficult to create documentation that links to dashboards.
The requested feature is that dashboard will first try to use the same port locally as the service, only falling back to a dynamic service if the local service is unavailable.

I feel like that may just cause more confusion when there is a conflict and then it chooses a random port. Won't the user then be confused why the port doesn't match the docs? We should be able to just make the docs not depend on the port most likely

@howardjohn My original plan was to make the docs not depend on the port.  I became concerned looking at deep links such as the reference to http://localhost:9090/graph#[{"range_input"%3A"1h"%2C"expr"%3A"istio_double_request_count"%2C"tab"%3A1}] from https://preliminary.istio.io/docs/tasks/observability/metrics/collecting-metrics/ .
@frankbu What do you think?  Give users UI instructions instead of deep links, or get istioctl dashboard to create stable ports?


changed batchDeleter from queue to capacityset

Fixes #86

Codecov Report

Merging #87 into master will increase coverage by 0.35%.
The diff coverage is 83.33%.

@@            Coverage Diff             @@
##           master      #87      +/-   ##
==========================================
+ Coverage   66.72%   67.07%   +0.35%
==========================================
  Files          20       22       +2
  Lines        1187     1227      +40
==========================================
+ Hits          792      823      +31
- Misses        356      364       +8
- Partials       39       40       +1

Impacted Files
Coverage Δ

capacityset/wrapper.go
0% <0%> (ø)

db/batchDeleter/batchDeleter.go
85.71% <90.9%> (-1.13%)
:arrow_down:

capacityset/capacityset.go
96.15% <96.15%> (ø)

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 74d788f...8622745. Read the comment docs.


Fixed Ignore Blank Fields On Create

Removed erroneous IsPrimaryKey check which caused fields that were not part of the Primary Key but were Blank to be inserted.
(Particularly a problem because DeletedAt would be set to the zero value.)
Make sure these boxes checked before submitting your pull request.

[x] Do only one thing
[x] No API-breaking changes
[x] New code/logic commented & tested

For significant changes like big bug fixes, new features, please open an issue to make an agreement on an implementation design/plan first before starting it.
What did this pull request do?
Fixed an issue where zero valued fields would be inserted instead of NULL/default values. This includes the DeletedAt field which would cause all rows to be automatically marked as deleted

blank primary key should not be inserted when insert.


question: Is the model used in the policy network always distilgpt?

In the paper you first state “The policy LM need not be the same as the LM we optimize the prompt for (i.e., task LM).”
In section Few Shot Text Classification you mention using RoBERTa-large as the "backbone model" but then in the appendix you stating "For all tasks, we uniformly use distilGPT-2"
I'm a bit confused. Are policy network model and task model (for which the prompt is optimized) the same? Am I right that for the task of text classification both, BERT and GPT could be utilized?

We have the backbone interested LMs to be prompted, and one prompt generation LM (i.e., distilgpt2).

Backbone LM (usually large LMs): The model at which you are interested for prompting. For instance, RoBERTa-large is referring to the downstream LM, whose main utility in this RL paradigm is to set up the correct rewards during prompt optimization.

Prompt Generation LM: We adopt distilgpt2 now, since it is much smaller, leading to much efficiency in our algorithm.

You need to further improve your understanding of our method formulation, a prompt generation framework for prompt optimization.

Sorry for reopening this, but I am a bit confused as to what model is being used for what.
Per my understanding from the code, the model generating the prompts is always a flavor of gpt-2. However, in the paper, figures 4 and 7 (the heatmaps) captions' states:

The columns represent the models used to learn the prompts, and the rows represent the models we perform classification with. Brighter color represents higher accuracy.

Also, there are RoBERTa models in the heatmap. does this mean the RoBERTa was used to generate the prompt, OR while training the gpt-2 model to generate the prompts, the generator LM was RoBERTa, and then while testing, the model was changed to something else to test for transferability?


googleapiclient.errors.InvalidJsonError

Please confirm the following:

I have upgraded to the latest GAM release from https://git.io/gamreleases and I still have this issue. Yes
I am typing the command as described in the GAM Wiki at https://github.com/jay0lee/gam/wiki
Yes
Full steps to reproduce the issue:

gam create user<EMAIL_ADDRESS>firstname Fake lastname User password userpassword org "Fake Org Here"

Expected outcome (what are you trying to do?):
Create a user in our G-Suite domain
Actual outcome (what errors or bad behavior do you see instead?):
Traceback (most recent call last):
  File "gam.py", line 10313, in <module>
  File "gam.py", line 9654, in ProcessGAMCommand
  File "gam.py", line 6369, in doCreateUser
  File "gam.py", line 728, in buildGAPIObject
  File "gam.py", line 713, in getClientAPIversionHttpService
  File "oauth2client/util.py", line 137, in positional_wrapper
  File "googleapiclient/discovery.py", line 223, in build
  File "googleapiclient/discovery.py", line 284, in _retrieve_discovery_doc
googleapiclient.errors.InvalidJsonError
Failed to execute script gam

I've updated to the latest version of GAM and it still doesn't appear to be working. Here's the machine I'm using:
Distributor ID:	Ubuntu
Description:	Ubuntu 16.04.2 LTS
Release:	16.04
Codename:	xenial

Not sure why GAM has suddenly stopped working.

Try deleting the entire gamcache folder that's in the gam folder and see if that resolves.

Doesn't appear to be a folder in the gam folder:
user@ubuntu:/bin/gam$ ls -l
total 0

If there is nothing in /bin/gam, then that's not the correct folder. cd to
the folder that contains the gam executable, check there.
Ross
On Fri, Feb 10, 2017 at 9:22 AM, jubilus<EMAIL_ADDRESS>wrote:

Doesn't appear to be a folder in the gam folder:
user@ubuntu:/bin/gam$ ls -l
total 0
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/jay0lee/GAM/issues/428#issuecomment-279006223, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AIU8Lybsa_d92wtjbhOnKgY9K0CZ3m4cks5rbJzcgaJpZM4L9oAE
.

--
Ross Scroggs
<EMAIL_ADDRESS>

That's clearly not the right folder as there's nothing in it. Where is gam installed?

My apologies you are correct. I looked in the wrong directory.
That being said, I did find the correct folder and deleted the gamcache folder, and the command began working again.
Thanks for the assistance.


Scarcity

Atoms, as currently devised, are extremely scarce. Currently, it works out to around 1 atom per 26 bitcoin. This is good and bad. Atoms are scarce, so more likely to have and hold value. However, their scarcity means that, if you need an atom to mint an NFT, for example, you might have to pay a lot for the privilage.
Alternatives:

One atom per coinbase output. Allows more atoms to be created if there's more demand.
Fractionalization schemes.
Multiple tiers of atoms. Tier 0: One per block. Tier 1: One per coinbase output. Tier 2: One per transaction output of every mined transaction. T0 is scarce and inelastic supply. T0 is less scarce, and production can respond to demand. T2: Absurd amounts, more than anyone could every one.

One possibility is that every output of every transaction of every block creates an atom. Numbered BLOCK.TRANSACTION.OUTPUT. If output is zero it can be omitted. If transaction and output are both zero, they can be omitted. What emerges is something similar to Urbit's address space, where shorter identifiers are scarcer and more valuable.

I'm thinking the third scheme is the best. Atoms are numbered N.N.N, using the block height, the transaction index, and the output index. Any number of trailing 0s can be omitted.
The identifier of the atom created in the genesis block coinbase transaction is the empty string.

Maybe atoms should be created by inputs, not outputs. Each input has a new atom. Encourages consolidation of utxos, and makes creation rule fully orthogonal to assignment rule.

Can coinbase tx have multiple inputs?

Satoshis aren't scarce. But shiny satoshis and cursed satoshis certainly are.


Code signing is required for product type 'App Extension' in SDK 'iOS 10.2'

Bitrise Build Issue Report template
Description of the issue
I keep getting an error saying Code signing is required for product type 'App Extension' in SDK 'iOS 10.2'. I have added all provisioning profiles that your helper tool extracts and I have added my .p12 file. Any suggestions?
Environment:
Bitrise.io -> Xcode 8.2.x on macOS Sierra. This happens in the Xcode Archive step.
Reproducibility

Does a "Rebuild" help? (You can trigger a rebuild from the Build's page, by clicking the "Rebuild" button in the top right corner of a finished build) : NO
Does a rebuild without caches help? (You can remove the Cache:Pull and Cache:Push steps temporarily to not to use the cache, or you can delete all the caches on the Settings tab of the app. : NO
If you have multiple different build configurations (workflows), does the issue affect all/more than one? : NO
If it's an issue which happens sporadically, what's the frequency? (e.g. Once a day ; about x% of the builds) : 100% of the builds
Does upgrading the build Step to the latest version help? : NO
When did the issue start? : Last weekend

Closing as we did not receive a reply - @Sjoerdjanssenen please let us know if we can help with anything and we'll reopen this issue!

Note for future reference: switching to Manual Code Signing in Xcode works - that way you can specify exactly which signing files should be used, instead of using Xcode's Automatic Code signing (where Xcode selects files automatically/in the background for the initial signing)


Update CONTRIBUTING.md

Github -> GitHub
github -> GitHub

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 4.0.0-alpha.14 :tada:
The release is available on:

npm package (@alpha dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Register the helm chart on artifacthub

By having migrated the project to the falcosecurity org, we got the benefit of all the integration, the helm chart is now: https://artifacthub.io/packages/helm/falcosecurity/falco-talon


Update Docs: Media “uploadcare”

Automatically generated by Netlify CMS

Thanks @rsedykh!
Sent with GitHawk


Handle additional MQTT 5 features in version 4

Describe the feature request
Handle MQTT 5 features:

SessionExpiryInterval
MessageExpiryInterval
WillDelayInterval
Persisted Sessions

Which project is your feature request related to?

Server

Describe the solution you'd like
I have implemented handling of the various intervals and also a persisted session extension point and related calls (for implementers to use their own storage to persist sessions) against branch feature/Reason_Code_In_Subscription_Interceptor. The interval handling is fairly concise, the persisted session extension is a bit more involved. There are overlaps with #1298.
It would be nice if this implementation could find it's way into the project but at this point I'm uncertain how to proceed. I.e. wait for #1298 then look at the rest, separate out the interval handling into a pull request (additional merge work later), or wait for a solution from someone else who may be working on this to integrate later? Any advice appreciated.
Describe alternatives you've considered
Any other solution will be fine.
Additional context
Related to #805, #806, #1256.

These features will be implemented but not in 4.0 because otherwise 4.0 would never be released 😄 My plan is to finalize, test and document the current version 4.0 features first. The only thing which is left are finalization of persisted sessions.

No worries. I'll leave it for a while and check back when version 4 is out.

I will close this ticket as it covers multiple features. Please create one ticket per feature (a few are already out there).


Reduce the number of layers in the Alpine runtime images

FROM microsoft/dotnet-nightly:2.1-runtime-deps-alpine

# Install .NET Core
ENV DOTNET_VERSION 2.1.0-preview1-25919-02
ENV DOTNET_DOWNLOAD_URL https://dotnetcli.blob.core.windows.net/dotnet/Runtime/$DOTNET_VERSION/dotnet-runtime-$DOTNET_VERSION-alpine.3.6-x64.tar.gz
ENV DOTNET_DOWNLOAD_SHA 7a8b081c890226ba7220c654dc833752f837171c2fe449367d24c2980db3a809012478a67423fd46264e5d2f0389a6890077f8dd25a1fc4aeecb25deb84d72a4

RUN apk add --no-cache --virtual .build-deps \
        openssl \
    && wget -O dotnet.tar.gz $DOTNET_DOWNLOAD_URL \
    && echo "$DOTNET_DOWNLOAD_SHA  dotnet.tar.gz" | sha512sum -c - \
    && mkdir -p /usr/share/dotnet \
    && tar -C /usr/share/dotnet -xzf dotnet.tar.gz \
    && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet \
    && rm dotnet.tar.gz \
    && apk del .build-deps

The three ENV instructions are not necessary.  The various official Docker images are not consistent on this pattern - some have it and others don't.  Since the purpose of supporting Alpine is to have an efficient and slime image, IMO we should remove the URL and SHA layers.  Their value is limited.  I believe there is value in preserving the DOTNET_VERSION as this easily identifies the version of the primary component.  Seeing this called out in the Dockerfile and when viewing Docker image layers is useful.
If this change is made, it should be used across all new Dockerfiles going forward in order to have consistency.  Additionally, the update-dependency tool will need to be updated accordingly.

Makes sense to me.


Implement customer feedback on the Leverage Lending Bot

Rename Health threshold

[x] Change Health threshold to Deleverage Level
[x] Change tooltip for Deleverage Level to If the loan health is below this threshold the bot will automatically repay the percentage of the loan defined in the Deleverage Percentage.

Add N as user input

[x] Move leverage field underneath borrow token field
[x] Create a new field called N (number of bands) underneath leverage` field
[x] Allow user to input integer N for this function https://github.com/VolumeFi/curve-leverage-lending-bot-vyper/blob/master/contracts/curve_leverage_bot.vy#L11

Add new field Deleverage Percentage

[x]  Add a new field called Deleverage Percentage underneath Deleverage Level
[x] Tooltip: Percentage of Loan that should be repaid to improve loan health when the loan is below the Deleverage Level
[x] User can input 1 - 100%
[x] This should be added in teh create_loan_extended call (smart contract needs to be udpated to contain this field)

@verabehr Do we have a default Deleverage Percentage value? Or empty value when page loaded?

@taariq @verabehr Do we have a default Deleverage Percentage value? Or empty value when page loaded?

Empty, but required by the user to complete.

Closing as finished.


CONFIGURATION-634: BasePath is incorrectly computed while init of CompositeConfiguration

BasePath should be constructed from URL only when null
Added testcase to verify the same

Resubmitting the pull request again with minor changes to location of test case.


Validating arrays with distinct rule involves attributes in nested arrays

Laravel Version: 5.3.22
PHP Version: 7.0.10

Description:
In docs for distinct validation rule it is written: "When working with arrays, the field under validation must not have any duplicate values.". But it checks not only the exactly the matching field, but all nested fields with the same attribute name. E.g. 'foo.*.id' => 'distinct' will check not only foo.0.id, foo.1.id,.. but also foo.0.nested.id.
The reason is that Str::is($attributeName, $key) matches not only foo.0.id or foo.1.id, but also foo.0.whatever.id
Steps To Reproduce:
$array = [
 'foo' => [
    ['id' => 1, 'nested' => ['id' => 2]],
    ['id' => 2],
  ]
];

$validator = Validator::make($array, [
  'foo.*.id' => 'distinct'
]);

if($validator->fails())
 dd($validator->errors());

will fail and return "The foo.1.id field has a duplicate value."

Thank you, submitted a fix in this PR: https://github.com/laravel/framework/pull/17102


Azure Data Studio User vs System Installer

Azure Data Studio Version:

Steps to Reproduce:

Download and install the user installer for Azure Data Studio, with OneDrive running.

Observe how slow and unresponsive your computer becomes

Solution: Uninstall Azure Data Studio, and download and install the system installer instead.  Problem solved.

@rhamenator the user and system installer are identical product bits.  The only differences are in the installer packaging settings.  Once the product is installed there shouldn't be any significant difference.
If there is a big perf difference you may check if there is are different virus scan rules on the user home directory vs. program files directory, or some other per-user setting.  I haven't been able to observed this behavior myself.  Please let me know if you have any additional repro or configuration steps that could help us get an internal repro to investigate.

I am using Windows Defender with its default settings. Give me a few days and I'll uninstall Azure Data Studio, then repeat the process. What information should I log to facilitate your investigation of the issue?

I repeated the installation of Azure Data Studio.  When I use the user installer, it causes OneDrive to start scanning for changes, even though the directory to which ADS was installed was not being synced to OneDrive.   The OneDrive scanning activity maxed-out my disk usage, but this time, the condition only lasted for a few minutes.  This behavior does not occur with the ADS system installer; therefore, I would suggest to people using OneDrive that they use the system installer instead of the user installer.


[MOB-?] Fix InAppMessage not being displayed due to correct KeyWindow not being retrieved on app that uses multiple windows

🔹 Jira Ticket(s)

MOB-XXXX

✏ Description
If a project makes use of multiple Windows, then the IterableSDK can fail to retrieve the correct one, resulting in the InAppMessage failing and never being displayed.
This fix allows the currently displayed Window to be retrieved (the true keyWindow), so the InAppMessage can be displayed on the very top view controller.
It also accounts for the iOS 15 changes to windows.
Notes:
I have only tested it on my company's app which uses multiple windows, I haven't tested it on a single window app.

Thanks for sharing this, Harry!


Shrink font sizes

The font sizes are too large, let's shrink to better fit the page (and fit more annotations in).
Before:

After:

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


ts2fable fails with non-descriptive error and no output

Description
Error using tstofable
Repro steps
Please provide the steps required to reproduce the problem
tstofable observable.d.ts

Expected behavior
outputs converted file
Actual behavior

ERROR: TypeError: Cannot read property 'kind' of undefined

Related information

Operating system: osx
Branch: master
Mono 4.4

gist of input: https://gist.github.com/7sharp9/ee23c6959af6490b3e52f67a0e1b9c15

Thanks for the report an for providing the code! The parser needs a full rewrite but for now I just fixed the error so the gist can be compiled. Published in 0.1.16.

Hi, thanks for looking at this, although the error message is gone, only 13 of the 21 functions are mapped to F# in the output.

That's strange, I got of all the functions from your gist:
namespace Fable.Import
open System
open Fable.Core
open Fable.Import.JS

module FuseJSObservable =
    type [<Import("*","FuseJS/Observable")>] Globals =
        static member o([<ParamArray>] object: obj[]): o.Observable = failwith "JS only"

    module o =
        type Observable =
            abstract value: obj with get, set
            abstract length: float with get, set
            abstract constructor: [<ParamArray>] object: obj[] -> obj
            abstract getAt: index: float -> obj
            abstract add: value: obj -> obj
            abstract remove: value: obj -> obj
            abstract tryRemove: value: obj -> obj
            abstract removeWhere: func: Func<obj, obj> -> obj
            abstract forEach: func: Func<obj, obj> -> obj
            abstract replaceAt: index: float * value: obj -> obj
            abstract replaceAll: array: ResizeArray<obj> -> obj
            abstract clear: unit -> obj
            abstract indexOf: value: obj -> float
            abstract contains: value: obj -> bool
            abstract refreshAll: newValues: obj * compareFunc: Func<obj, obj, bool> * updateFunc: Func<obj, obj, unit> * mapFunc: Func<obj, obj> -> obj
            abstract where: condition: Func<obj, bool> -> Observable
            abstract map: func: Func<obj, obj> -> Observable
            abstract count: unit -> float
            abstract count: condition: Func<obj, bool> -> Observable
            abstract not: unit -> bool
            abstract filter: condition: Func<obj, bool> -> Observable
            abstract expand: unit -> Observable


Reproduce results on Office-31

Hi!
I'm trying to reproduce results on Office-31.
I've trained each experiment 10 times. I've selected the best results in each train(not the last one). I've calculated average of 10 samples and it is worse in D->A: in paper result is 78, my result is 77,
in D->W: in paper result is 99.1, my is 98.3 and W->A: in paper result is 77, my result is 75.6.
Can you help me with this issue?

Same problem for me.
Actually i found the parameter "FILTER_THRESHOLD" in the config file makes big difference. According to what i found, set it to 0.05 would increase about 2% accuracy on a->d, compared with 1, i.e. no filtering. You may try different values for the parameter to see if it works.

Thank you for your reply
I've trained with different FILTER_THRESHOLD(0.05, 0.5, 0.75) on d->a. Unfortunately, results haven't improved

@Ledzy @kuztown  Can you tell what was the final accuracy you managed to get for Office-31 on average of all tasks with this code?


Add Send + Sync + 'static bounds to K, V and S of sync and future Caches

This PR adds Send, Sync and 'static bounds to the type parameters K (key), V (value) and S (hasher state) of the following cache implementations:

sync::Cache
sync::SegmentedCache
future::Cache

This will prevent the following usage from drawing undefined behavior:

Single thread application using an above thread-safe cache.
Store non-Send or non-Sync type (such as std::rc::Rc) as key (K) and/or (Value).
Or, store non static reference type as key and/or value.

Until now, storing such key or value types was possible in single thread application (including single-threaded async runtime such as Actix-rt) because above caches did not ask these bounds explicitly.
However doing so is incorrect as it can draw undefined behavior. This is because these caches use multiple threads internally for updating internal data structures and evicting cached values.
use std::{rc::Rc, time::Duration};

// This code will compile, but cat hit an undefined behavior (UB) as breaking
// thread safety guarantee of std::rc::Rc.

// Create a sync::Cache with TTL 1 second.
let cache = moka::sync::CacheBuilder::new(100)
    .time_to_live(Duration::from_secs(1))
    .build();

// Create a Rc, which is !Send and !Sync. (Rc's strong reference count should be 1)
let v = Rc::new("Hello".to_string());

// Insert a clone of RC to the cache. (The strong count should be 2 now)
cache.insert(0, Rc::clone(&v));

// Sleep for 5 seconds.
std::thread::sleep(Duration::from_secs(5));

// While sleeping, the value `v` should have been expired so sync::Cache's
// eviction thread will drop it. Dropping will make the strong count to be
// decremented by 1 but this thread may not see the decrement as Rc is
// neither Send nor Sync.

println!("{}", Rc::strong_count(&v));  // 1 or 2? (*1)

Adding Send, Sync and 'static bounds should prevent the problem by making such code not to compile by type errors.
Note that multi-thread APIs such as std::thread::spawn or multi-threaded async runtime (such as the ones provided by Tokio and async-std) will ask those bounds explicitly. So there should have been no problem with them.

*1: I wrote the code for illustrating purpose. If you actually run the code, it will always prints 2. However, this does not mean you hit the UB, but it is actually an expected behavior. sync::Cache and future::Cache employ concurrent hash table cht::SegmentedHashMap as the main key value storage. cht will not drop a removed value immediately by the spec to provide high concurrency and thread safety. See this issue for more details: https://github.com/Gregory-Meyer/cht/issues/23

Adding Send, Sync and 'static bounds should prevent the problem by making such code not to compile by type errors.

Verified that the above code no longer compiles.
error[E0277]: `Rc<String>` cannot be sent between threads safely
 --> examples/rc-ex.rs:8:13
  |
8 | let cache = moka::sync::CacheBuilder::new(100)
  |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Rc<String>` cannot be sent between threads safely
  |
  = help: the trait `Send` is not implemented for `Rc<String>`
  = note: required by `moka::sync::CacheBuilder::<moka::sync::Cache<K, V>>::new`

error[E0277]: `Rc<String>` cannot be shared between threads safely
 --> examples/rc-ex.rs:8:13
  |
8 | let cache = moka::sync::CacheBuilder::new(100)
  |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Rc<String>` cannot be shared between threads safely
  |
  = help: the trait `Sync` is not implemented for `Rc<String>`
  = note: required by `moka::sync::CacheBuilder::<moka::sync::Cache<K, V>>::new`

error[E0277]: `Rc<String>` cannot be sent between threads safely
  --> examples/rc-ex.rs:10:6
   |
10 |     .build();
   |      ^^^^^ `Rc<String>` cannot be sent between threads safely
   |
   = help: the trait `Send` is not implemented for `Rc<String>`

error[E0277]: `Rc<String>` cannot be shared between threads safely
  --> examples/rc-ex.rs:10:6
   |
10 |     .build();
   |      ^^^^^ `Rc<String>` cannot be shared between threads safely
   |
   = help: the trait `Sync` is not implemented for `Rc<String>`

error[E0277]: `Rc<String>` cannot be sent between threads safely
  --> examples/rc-ex.rs:16:17
   |
16 | cache.insert(0, Rc::clone(&v));
   |                 ^^^^^^^^^^^^^ `Rc<String>` cannot be sent between threads safely
   |
   = help: the trait `Send` is not implemented for `Rc<String>`

error[E0277]: `Rc<String>` cannot be shared between threads safely
  --> examples/rc-ex.rs:16:17
   |
16 | cache.insert(0, Rc::clone(&v));
   |                 ^^^^^^^^^^^^^ `Rc<String>` cannot be shared between threads safely
   |
   = help: the trait `Sync` is not implemented for `Rc<String>`

error: aborting due to 6 previous errors

For more information about this error, try `rustc --explain E0277`.
error: could not compile `moka`

To learn more, run the command again with --verbose.


Can this program be run without Docker in a non-root user environment?

Since the computing platforms we use generally do not support root permissions and Docker deployment is not possible, is there a way to run this program without Docker in a non-root user environment?
Thank you very much for your guidance or help, I am extremely grateful!
（因为我们所使用的计算平台一般不支持root权限，并且也无法进行docker部署，请问有没有办法在非root用户的环境中不使用docker运行此程序呢？
非常感谢您能给予指导或帮助，万分感谢！）

You can use the Docker without root permission (see the detailed settings in the Advanced Setup section). The environment setting is too complicated to ensure each user can setup well. To avoid any unexpected errors and incorrect software versions, currently we provide Docker, the simplest way to use it.


⚠ Minecraft has degraded performance

In 4aaebde, Minecraft (https://www.minecraft.net) experienced degraded performance:

HTTP code: 200
Response time: 1363 ms

Resolved: Minecraft performance has improved in 2452128.


Create a new release to support phoenix 1.6.0, phoenix_html 3.0

Master is already compatible so can you create a new release so I can upgrade my dependencies?

I would also be very interested in this!

Current workaround:
{:phoenix_slime, git: "https://github.com/slime-lang/phoenix_slime.git", branch: "master"}