20130309

Renaming software projects

I renamed “django-north” to “North” on PyPI.

Here is how I did it:

  • Run pip uninstall django-north
  • In setup.py, change name from “django-north” to “North”
  • Run python setup.py register. This is the final confirmation that nobody else had registered this name before.
  • Run pip install -e t:hgworknorth

So the Python package name and my internal name are “north”, on PyPI it is now “North”. And on Google it continues to be “django-north” because I don’t believe it is possible to rename a project there as easily.

I then also renamed “django-site” to “DjangoSite” on PyPI. Which I then regretted and undid. So for django-site the Python package name is “djangosite”, my internal name is just “site”, and the official names on PyPI and Google are “django-site”.

I should probably also rename “lino” to “Lino”. But “lino-welfare” should remain lowercased.

Uh! The rules of naming software projects would deserve a whole book to be written by a linguist…

setup.py register says TypeError: ‘NoneType’ object has no attribute ‘__getitem__’

In a first attempt of python setup.py register I had the following error message:

running check
Traceback (most recent call last):
  File "setup.py", line 4, in <module>
    setup(**SETUP_INFO)
  ...
  File "c:\Python27\lib\site-packages\docutils\nodes.py", line 1021, in set_id
    for id in node['ids']:
TypeError: 'NoneType' object has no attribute '__getitem__'

This was because I used the text role “xfile” (unknown for PyPI which uses only docutils and not Sphinx) in my README.txt file:

Basic usage in your :xfile:`settings.py` file is...

Tutorial: Multilingual database content using North

I wrote a new tutorial about multi-lingual database content. north:mldbc_tutorial. Also updated documentation about north:mldbc

Started to used InterSphinx references.

Multilingual database content using North. This is a tested document and a first useful application of what I’ve been doing last week.

Also note the new method djangosite.Site.call_command()… that would deserv e another new chapter in djangosite.

Lino is currently growing more quickly than I can write…

rsync without password

Until now I wasn’t too much disturbed by the fact that rsync asks me for a password each time I publish the html generated by Sphinx to LF. Yes annoying, but rsync was still much quicker and easier to use than any other method I’ve tried.

But that’s because I had never managed 4 software projects in parallel before. Now it was time to solve this old issue.

I had already used ssh-keygen before, so I had my key pair. The problem was that I had generated it with a passphrase.

But in ssh-keygen I read how easy it is to remove the passphrase:

$ ssh-keygen -p Enter file in which the key is (/home/luc/.ssh/id_rsa): Enter old passphrase: Key has comment ‘/home/luc/.ssh/id_rsa’ Enter new passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved with the new passphrase.

Another thing: On the remote machine (where I have root access), in /etc/ssh/sshd_config I had to find the AuthorizedKeysFile parameter and uncomment it:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys

Then again on the remote machine I

$ nano ~/.ssh/authorized_keys
$ chmod og-r .ssh/authorized_keys
$ chmod og-rwx -R .ssh

/home/luc/snapshots/django/django/conf/__init__.py

mod = importlib.import_module(self.SETTINGS_MODULE) #try: # mod = importlib.import_module(self.SETTINGS_MODULE) #except ImportError as e: # raise ImportError(“Could not import settings ‘%s’ (Is it on sys.path?): %s” % (self.SETTINGS_MODULE, e))